joshua分享 简单题:先打素数表,再从最小值的那个开始从最大素数开始判断

N-GCD

http://www.nowcoder.com/questionTerminal/97142035f7d2443c91a3ffc343ad691d

joshua分享 简单题:先打素数表,再从最小值的那个开始从最大素数开始判断

#include <bits/stdc++.h>
using namespace std;

int main(void) {
    int n, i, j, tMin = 0x7fffffff;
    vector<int> chart(50001, 1);
    vector<int> prim;

    cin >> n;
    vector<vector<int>> arr(n, vector<int>(2, 0));
    for(i = 0; i < n; i++) {
        cin >> arr[i][0] >> arr[i][1];
        // 找出n对数据中的最小值
        tMin = min(tMin, min(arr[i][0], arr[i][1]));
    }
    // 打表,找出<=50000的的所有素数,并依次放到prim数组中
    for(chart[1] = 0, i = 2; i < chart.size(); i++) {
        if(chart[i]) {
            prim.push_back(i); // 依次把素数放进去
            for(j = i*i; j < chart.size(); j += i)
                chart[j] = 0;
        }
    }
    // 初始化,从最大可能满足条件的素数开始递减
    for(i = 0; i < prim.size(); i++)
        if(prim[i] >= tMin) break;
    // 开始查找
    while(i >= 0) {
        for(j = 0; j < n; j++) {
            if(arr[j][0] % prim[i] == 0 || arr[j][1] % prim[i] == 0);
            else break;
        }
        if(j == n) break;
        i--;
    }
    if(j == n) cout << prim[i] << endl;
    else cout << -1 << endl;

    return 0;
}
全部评论
2 7 14 3 21 这个结果不应该是7吗,为什么是3,有点不理解
点赞 回复 分享
发布于 2020-08-07 11:25

相关推荐

Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务