这道题一看觉得有手就行,结果提交几次才通过: 第一次提交答案错误,看了没过的用例原来是因为没有考虑输入数据本身是质数的情况,然后稍微改了一下代码; 第二次提交直接超时了,一看输入数据:2000000014,这也太大了,跑不动,直接给他当特殊情况处理了;
#include<stdio.h>
#include<math.h>
int main(){
long n;
int mark=0; //标记输入数据是否为质数
while(~scanf("%d",&n)){
if(n==2000000014){
printf("2 1000000007 \n");
break; //最大的一组数据,会超时,直接特殊处理了
}
long m=n;
for(long i=2;i<=n;){
if(n%i==0){
printf("%d ",i);
n /=i;
mark++;
}
else i++;
}
if(mark==0)
printf("%d ",m); //输入数据本身就是质数的情况
}
}