关于分解质因数的程序
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
下面是我的程序,运行了没有问题啊~
#include <stdio.h>
int main()
{
long n , i = 2;
scanf("%ld",&n);
if(n == 1)
{
printf("1=1");
}
else
{
printf("%ld=",n);
do
{
if(n % i == 0)
{
printf("%ld*",i);
n = n / i;
}
else
{
i++;
}
}while(i < n);
printf("%ld",n);
}
return 0;
}#include <stdio.h>
int main()
{
long n , i = 2;
scanf("%ld",&n);
if(n == 1)
{
printf("1=1");
}
else
{
printf("%ld=",n);
do
{
if(n % i == 0)
{
printf("%ld*",i);
n = n / i;
}
else
{
i++;
}
}while(i < n);
printf("%ld",n);
}
return 0;
}
可是,我在我们学校的在线评测上却是一共4组测试数据,第1、3、4了accepted了,而第二个却显示是错误答案,觉得会不会是有什么值得注意的特殊点,想想也就是1吧?因为题目有说是正整数,所以对于0和负数就不用考虑了呀,求助呀,烦恼死了。。。