C语言求质因数

来源:百度知道 编辑:UC知道 时间:2024/05/13 07:51:46
13 #include <stdio.h>
14 int main(void)
15 {
16 int n,i;
17 printf("Enter an integer (2-2147483647):");
18 scanf("%i",&n);
19 printf("%i=",n);
20
21
22 for(i=2;i<=n;i++)
23 {
24 while(n!=1)
25 {
26 if( n%i==0)
27 {
28 printf("%i*",i);
29 n=n/i;
30
31 }
32
33 else break;
34 }
35
36 }
37 printf("%i\n",n);
38 return 0;
39 }
我的程序哪里错了?为什么最后结果里有1呢?(eg:2=2*1,8=2*2*2*1)
先谢谢了!~
最后我应该怎么改才可以符合题目的条件呢?谢谢!!

while(n!=1)
当N不等于1的时候循环~但是printf("%i\n",n); 这句还是执行了
有求,那我就来了.
首先把i<=n的等于号去掉,改为i<n就好(楼下说的)
然后补充:最后一个printf就不要了,那么1就不显示出来了.还是有点地方要改~改好的如下:
#include <stdio.h>
main()
{
int n,i;
printf("Enter an integer (2-2147483647):");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=1)
{
if( n%i==0)
{
printf("%i",i);
n=n/i;
}
else
break;
if(n!=1)/*当n=1时就不显示"*"号,如果没这句,你可以看看会出现什么*/
printf("*");
else
;
}
}
}

分都没得