using namespace std
int main()
{
int *a,n
cout<迅裤<"输入:"
cin>>n
a=new int[n]
for(int i=0i<ni++)
cin>>a[i]
for(int i=0i<亩搜简ni++)
{
for(int j=2,k=0,x=a[i]j<=a[i]j++)
{
for(x>0k++)
{
if(x%j==0)
{
if(k!=0) cout<<漏销'*'
cout<<j
x/=j
}
else break
}
}
cout<<endl
}
delete []a
return 0
}
//貌似楼上几位都忘了重复测试i能否整除目标整数?#include <iostream>
using namespace std
void main()
{
long N,N2,i,t,count
cout<<"<因式分解>"<<endl
cout<<"本程序中N和1不视作N的因子。"<<endl
while(1){
cout<<"请输入一个正整数N:"
cin>>NN2=N
count=0t=N/2 //大于N/2的数不能成为N的因子。(本早宴程序中N本身不算N的一个因子)
for(i=2i<=ti++){
if(N%i==0){
if (++count==1) cout<<"N="<<N<<"="
cout<<iN/=i
if(N!=1) cout<<"×"搜拆
i-- //再次测试陆漏银i是否还能成为N的因子
}
if(N==1) break
}
if(count==0) cout<<N2<<"是质数。"<<endl
cout<<endl<<endl
}
}
不是分解质因数,对吗?分解质因数简单,分解咐槐因数要难些,利用姿携回溯可以做,以下是我写的代码,看一看是否是你想要的。
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"
typedef int Integer[100]
Integer s
int t=0
int D
void dd(int m,int n)
void main()
{
printf("输入一个大于3的正整数衡册友:")
do
{
scanf("%d",&D)
if(D<=3)
{
printf("输入错误,请重新输入!")
}
else
{
break
}
}while(D>3)
dd(2,D)
}
void dd(int m,int n)
{
int i,j,k
i=m
j=n
if(i<=j/i)
{
if(j % i==0)
{
t=t+1
s[t]=i
for(k=1k<=tk++)
{
printf("%d*",s[k])
}
printf("%d=%d\n",j/i,D)
dd(i,n/i)
t=t-1
dd(i+1,j)
}
else
{
dd(i+1,j)
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)