题目描述
将一个正整数分解质因数,例如,输入90,输出2 3 3 5。
输入
输入一个正整数n(2<=n<=2000)。
输出
从小到大输出n的所有质因子,每两个数之间空一格。
样例输入
20
样例输出
2 2 5
此题使用辗转相除法
,除数i即为质因子,与题zzuli1062: 最大公约数有异曲同工之妙,但是需注意使用while循环时,判断条件与求最大公约数时不同
本题使用while循环或者for循环均可
代码如下
//for循环
#include<stdio.h>
int main()
{
int n,i;
scanf("%d",&n);
for(i=2;i<=n;)
{
if(n%i==0)
{
printf("%d ",i);
n=n/i;
}
else i++;
}
return 0;
}
//while循环
#include<stdio.h>
int main()
{
int n,i=2;
scanf("%d",&n);
while(i<=n)
{
if(n%i==0)
{
printf("%d ",i);
n=n/i;
}
else i++;
}
return 0;
}