[求助]题目:将一个正整数分解质因数。
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5我开始用FOR循环来做,但不知道是不是因为在循环过程中需要不断改变限制条件,无法得到完全正确的结果.
所以我就改用WHILE循环来做
#include "math.h"
int sushu(int a)/*判断是否为素数的一个函数*/
{ int b;
if (a=1) return 0 ;
for (b=2;b<=sqrt(a);b++)
{if (a%b==0) return 0;}
return 1;
}
main()
{ int b,c=2,d=0;
scanf("%d",&b);/*输入待处理的数字*/
printf("%d=",b);
while(b!=1)/*循环过程中需不断改变b的值,当被除尽时结束*/
{if (b%c==0&&sushu(c))/*判断是否为质因数*/
{printf ("%d",c);b=b/c;if (b!=1) {printf("*");c=c-1;}}
c=c+1;
}
}
我仔细进行了检查 没发现什么错误 但运行后 输入数据 按回车 显示 divide error
请好心人指点 不胜感激
----------------解决方案--------------------------------------------------------
本人刚才突然醒悟 发现自己犯了一个非常严重的错误 其实根本不需要什么判断素数的函数
只需要从2开始一直增加进行循环就可以了 这样也不会出现合数
不过依然请教一下 上面的例子的错误还出现在哪里
----------------解决方案--------------------------------------------------------
附上标准答案
main()
{
int n,i;
printf("\nplease input a number:\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!=i)
{
if(n%i==0)
{ printf("%d*",i);
n=n/i;
}
else
break;
}
}
printf("%d",n);
}
----------------解决方案--------------------------------------------------------