本文主要是介绍1179 最大的最大公约数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给出N个正整数,找出N个数两两之间最大公约数的最大值。例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5。
Input
第1行:一个数N,表示输入正整数的数量。(2 <= N <= 50000) 第2 - N + 1行:每行1个数,对应输入的正整数.(1 <= S[i] <= 1000000)
Output
输出两两之间最大公约数的最大值。
Input示例
4 9 15 25 16
Output示例
5
求出n个数所有的因子并记录它们出现的次数,然后找到其中 num >= 2(有两个数有这个因子) 的最大值即可
代码:
#include <iostream>
using namespace std;//求出n个数所有的因子并记录它们出现的次数,
//然后找到其中 num >= 2(有两个数有这个因子) 的最大值即可int s[1000005];
int sum;int main()
{int n,a;cin>>n;int Max = 0;for(int i=0;i<n;i++){cin>>a;Max=max(a,Max);s[1]++;s[a]++;for(int j=2;j*j<=a;j++){if(a%j==0){s[j]++;s[a/j]++;}}}for(int i=Max;i>=1;i--){if(s[i]>=2){sum=i;break;}}cout<<sum<<endl;return 0;
}
这篇关于1179 最大的最大公约数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!