题目链接:点我点我
题意:就是题目的名字
题解:从大往小筛一下就可以了,时间复杂度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 }
时间: 2024-10-23 05:43:29