#include <bits/stdc++.h>
using namespace std;
long long t, n, vis[1000005], p[1000005], sum;
void cs () {
vis[0] = vis[1] = sum = 1;
for (long long i = 2; i <= 1000000; i++) {
if (vis[i]) continue;
p[sum] = i;
sum++;
for (long long j = i * 2; j <= 1000000; j += i)
vis[j] = 1;
}
}
int main () {
scanf ("%lld", &t);
cs ();
while (t--) {
scanf ("%lld", &n);
for (long long i = 1; i * i <= n && n > 1; i++) {
while (n > 1 && !(n % p[i])) {
printf ("%lld ", p[i]);
n /= p[i];
}
}
if (n > 1) {
printf ("%lld", n);
}
printf ("\n");
}
return 0;
}
样例过了,"i * i <= n"也写了,不知道为什么RE。