这道题我不会做,我看了题解,也不太明白 https://atcoder.jp/contests/abc284/editorial/5490
我不太明白的是,为什么一定选出来的 i 就是质数?程序中的 break 的用处又是什么?
这里贴出题解代码:
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
int t;
cin >> t;
while (t--) {
ll n;
cin >> n;
ll p = 0, q = 0;
for (ll i = 2; i * i * i <= n; i++) {
if (n % i != 0) continue;
if ((n / i) % i == 0) {
p = i;
q = n / i / i;
} else {
q = i;
p = (ll) round(sqrt(n / i));
}
break;
}
cout << p << ' ' << q << endl;
}
}