这道题不考虑特殊数据都能过 比如 0 1的时候就直接是输出空格的 没其他的输出 看来测试数据没这样的数据 但是我们写程序还是写得严谨一点 我写了 后来提交的时候又删了这道题需要的知识是 筛素数 需要比较快的做法 否者会超时 然后从头到尾扫一遍 满足条件的就输出 注意同一个因子可能出现多次
#include<cstdio>
#include<cmath>
#include<algorithm>
#define LL long long
#define MAX 1000001
LL prime[MAX];
void init()
{
for(LL i = 2; i < MAX; i++)
for(LL j = 2; j*i <MAX;j++)
{
prime[i*j] = 1;
}
}
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif // LOCAL
init();
LL N;
while(scanf("%lld",&N))
{
if(N < 0)break;
LL t = MAX;
for(LL i = 2; i <= t;i++)
if(prime[i] == 0)
{
while(N%i==0)
{
printf(" %lld\n",i);
N /= i;
}
if(N < t)t = N;
}
if(N != 1)printf(" %lld\n",N);
printf("\n");
}
return 0;
}