题解 | Problem C
#include <bits/stdc++.h>
#include <cctype>
using namespace std;
int get_prime_factor(int a) {
if (a == 1 || a == 2)return a;
for (int i = 2; i <= sqrt(a); i++) {
if (a % i == 0) {
return max(get_prime_factor(a / i), i);
}
}
return a;
}
int main() {
int n;
while (cin >> n) {
while (n--) {
string s;
cin >> s;
int ans = 0;
for (int i = 0; i < s.size(); i++) {
if (isdigit(s[i])) {
ans *= 10;
ans += s[i] - '0';
}
}
cout<<get_prime_factor(ans)<<endl;
}
}
}
依靠isdigit函数判断是否为int,组合成int目标数,然后我们只需要计算出来他的最大质因数即可,计算方法是递归法

