题解 | 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目标数,然后我们只需要计算出来他的最大质因数即可,计算方法是递归法

全部评论

相关推荐

01-24 08:58
已编辑
上海交通大学 后端
外企 后端开发(go) 总包n+6
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-09 16:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务