素数分解
用递归求素数其改正#include<stdio.h>
#include<math.h>
int jieguo(int a,int d);
int isprime(int a);
main()
{
int a;
scanf("%d",&a);
jieguo(a,a-1);
}
int jieguo(int a,int d)/*输出结果*/
{
// printf("%d\n ",d);
int x,g=1,sum=1,z;
while(g)
{
x=a%d;
d--;
if(x==0)
g=0;
}
if(isprime(d+1)==1)
{
printf("%d* ",d+1);
if(d==1)
return 0;
return jieguo(a,d);/*递归*/
}
else
{
if(d==1)
return 0;
return jieguo(a,d);/*递归*/
}
}
int isprime(int a)/*判断是否为素数*/
{
int v,n=0,i;
if(a==2)
return 1;
if(a==1)
return 0;
double x=sqrt(a);
for(i=2;i<=sqrt(a)+1;i++)
if(a%i==0)
n++;
if(n!=0)
return 0;
else
return 1;
}