试题 算法提高 分解质因数
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定一个正整数n,尝试对其分解质因数
输入格式
仅一行,一个正整数,表示待分解的质因数
输出格式
仅一行,从小到大依次输出其质因数,相邻的数用空格隔开
样例输入
100
样例输出
2 2 5 5
数据规模与约定
n<=2147483647
代码
#include<stdio.h>
#include<math.h>
int main(){
int n,i,f=0;//n不大于2147483647所以int就行
scanf("%d",&n);
if(n==1){
printf("%d",n);
}
else{
for(i=2;i<=sqrt(n);i++){//用平方根减少循环次数
if(n%i==0){
printf("%d ",i);
n/=i;
i=1;
}
}
if(n){//for循环已经输出初始n的所有质因数但判断到sqrt(n)就结束了,差了最后的n所以输出n即可
printf("%d",n);
}
}
return 0;
}