题解:从小到大循环分解输出相同的质数,范围到sqrt()。
#include <cstdio>
#include <cmath>
using namespace std;
int main() {
long long int n, temp;
int flag;
while (scanf("%lld", &n) && n > 0) {
temp = sqrt(n);
flag = 0;
for (long long int i = 2; i <= temp; i++)
while (n % i == 0) {
flag++;
n = n / i;
printf(" %lld\n", i);
}
if (flag != 0 && n != 1)
printf(" %lld\n", n);
if (flag == 0)
printf(" %lld\n", n);
printf("\n");
}
return 0;
}