首页 > 试题广场 >

N-GCD

[编程题]N-GCD
  • 热度指数:3907 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小明很喜欢数对,又很喜欢GCD(最大公约数)。所以他想尽办法创造了一种全新的最大公约数:
给出若干个数对(ai,bi),如果一个最大的质数x可以整除每一个数对中的至少一个数字并且这个数字大于1,那么x就称为这些数对的N-GCD。
现在小明给了你一些数对,希望你可以算出它们的N-GCD。

输入描述:


第一行一个数字n,表示数对的个数。

接下来n行,每行两个数字,用一个空格分隔,表示一个数对。

满足1<=n <=150000,1<=ai,bi<=2 * 10^9。





输出描述:
一个数字,这些数对的N-GCD;若N-GCD不存在,那么输出-1。
示例1

输入

3
2 2
3 6
7 8

输出

2
示例2

输入

2
18 12
3 24

输出

3
头像 bandiaoz
发表于 2024-12-26 14:08:59
解题思路 这是一道数论题目,主要思路如下: N-GCD的定义: 对于一组数对 ,如果存在一个质数 可以整除每个数对中的至少一个数 且 大于1,则 就是这些数对的 N-GCD 求解步骤: 找出所有数对中最小的数 生成不超过这个最小数的所有质数 检查每个质数是否满足N-GCD的条件 展开全文
头像 ls.joshua
发表于 2020-03-25 17:35:46
joshua分享 简单题:先打素数表,再从最小值的那个开始从最大素数开始判断 #include <bits/stdc++.h> using namespace std; int main(void) { int n, i, j, tMin = 0x7fffffff; v 展开全文