请教一个C语言编程问题,急等答案,先谢谢了!

请编写程序实现的功能是:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

这个怎么编呀?帮帮忙!如果可以讲一下思路!谢谢哦!

这里有详细的算法分析和源代码(本人就偷懒不写了):
http://www.52wg.org/computer/chengxu/200511/computer_99478.html

补充一点:
总体思路:试商,最多只要试到N的平方根就可以了(找到一个质因数后,再用N除以质因数后的结果继续分解)。

核心——从2开始,用sqrt(N)以内的数去试商,不断重复即可得到所有的质因数

** 从2 -- sqrt(N), 一旦有可以整除的数,除数即为一个质因数,N=商,重复本步骤,如果不能被任一个数整除,N即为一个质因数,算法结束。

模拟一下过程:

例如:N=90
第一次:sqrt(N) = 9, 质因数2 ,商= 90/2 = 45;N = 45;
第二次:sqrt(N) = 6, 质因数3, 商= 45/3 = 15; N = 15;
第三次:sqrt(N) = 3, 质因数3, 商= 15/3 = 5;N = 5;
第四次:sqrt(N) = 2, 没有可整除的数,N即为质因素, 即质因数5
完毕
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-11-03
#define max 20
main()
{int i,n,m,k=0;
int c[max];
pringf("请输入一个正整数");
scanf("%d",&n);
m=n
for(i=2;i<=n|n==0;i++)
{if(n%i==0)
{c[k]=i;
k++;
n=n/2;
i--;
}
printf("%d=%d",m,c[0]);
for(i=1;i<k;i++)
{printf("*%d",c[i]);
}
if(k==1)
{printf("1");
}
}

}
第2个回答  2006-11-03
现在在上课,等回宿舍帮你弄啊!!
相似回答