题目
输入一个整数,输出其所有质因子。
输入
输入只有一行,包含一个整数n。
数据规模和约定
1< =n< =10000。
输出
输出一行,包含若干个整数,为n的所有质因子,按照从小到大的顺序排列。
样例输入
6
样例输出
2 3
解题思路
遍历求解因子,再判断是否为质数,若是,进行输出。由于>2的偶数均不是质数,因此,可以在遍历时加上这一规律,即大于2时的偶数均跳过,可以节约一定的循环次数和时间。
易错点
要求质因子,因此该数字需要是质数且为输入的数字的因子。
代码
#include<stdio.h>
int is_prime(int a){
int i;
for (i=2;i<=sqrt(a);i++)
{
if (a%i==0)
return 0;//不是质数
}
return 1;
}
int main()
{
int a,i,isfirst = 0;
scanf("%d",&a);
for (i=2;i<a;i++)
{
if (i!=2 && i%2==0)
continue;
if (a%i==0 && is_prime(i)==1)
{
if (isfirst!=0)
printf(" ");
printf("%d",i);
isfirst = 1;
}
}
return 0;
}