51 Nod 1179 最大的最大公约数(筛法)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51 Nod 1179 最大的最大公约数(筛法)相关的知识,希望对你有一定的参考价值。

题目链接:点我点我

题意:就是题目的名字

题解:从大往小筛一下就可以了,时间复杂度O( n* sqrt(max{num[i]}) )。

 1 #include <cstring>
 2 #include <iostream>
 3 #include <algorithm>
 4 using namespace std;
 5 
 6 const int N=1000000+10;
 7 int num[N];
 8 
 9 int main(){
10     memset(num,0,sizeof(num));
11     int n,tmp,cnt,M_num=0;
12     cin>>n;
13     
14     for(int i=1;i<=n;i++){
15         cin>>tmp;
16         num[tmp]=1;
17         M_num=max(M_num,tmp);
18     }
19     for(int i=M_num;i>=1;i--){
20         cnt=0;
21         for(int j=i;j<=M_num;j+=i){
22             if(num[j]==1) cnt++;
23             if(cnt==2) {cout<<i<<endl;return 0;} 
24         }
25     }
26     return 0;
27 }

 

以上是关于51 Nod 1179 最大的最大公约数(筛法)的主要内容,如果未能解决你的问题,请参考以下文章

51Nod 1179 最大的最大公约数

51nod 1179 最大的最大公约数

51nod 1179 最大的最大公约数

51nod 1179 最大的最大公约数

最大的最大公约数( 51nod-1179)

51nod 1179 最大的最大公约数 (无耻的打表计数法)