这个题是同学想到了来问我的,具体题目并没有去找过,意思其实很简单,就是输入一个数然后输出它的分解情况,例如:输入50,结果就是50=2 x 5 x 5;输入77,输出77= 7 x 11;
这个题拿到我就先想在主函数中倒腾,但是发现有较简单的方法,那就是用递归做,建立一个递归函数以实现一个数一个数的输出,递归的结束一定是最后一个为质数的数,要记得把第一个数在主函数中单独输出以控制格式,记得讨论输入为1的请况!
具体代码如下,请看,希望有更好的方法可以指导交流!!!
#include <stdio.h>
#include <math.h>
int
Judgeprime(int x)
{
int i;
for (i=2;i<=sqrt(x);i++)
{
if (x%i==0)
{
return 0;
}
}
return 1;
}
void
Judge(int m)
{
int j,n,q;
if(Judgeprime(m)==1)
{
printf(" x %d",m);
return ;
}
for (j=2;j<=m;j++)
{
n=m%j;
if(n==0)
{
q=m/j;
printf(" x %d",j);
Judge(q);
break;
}
}
}
int main()
{
int i,d,n,p;
scanf("%d",&n);
printf("%d = ",n);
if(n==1)
{
printf("1");
}
for(i=2;i<=n;i++)
{
if(Judgeprime(n)==1)
{
printf("1 x %d",n);
break;
}
d=n%i;
if(d==0)
{
p=n/i;
printf("%d",i);
Judge(p);
break;
}
}
return 0;
}
仅代表个人观点,不喜勿喷,欢迎评论!