给定一个长度为 nn 的整数序列 a1,a2,…,ana1,a2,…,an。
请你从中选出尽可能多的数。
要求满足如下两个条件之一:
- 仅选择一个数;
- 选择至少两个数,且所选择的数的最大公约数大于 11;
输入格式
第一行包含整数 nn。
第二行包含 nn 个整数 a1,a2,…,ana1,a2,…,an。
输出格式
数据范围
前 66 个测试点满足 1≤n≤101≤n≤10。
所有测试点满足 1≤n≤1051≤n≤105,1≤ai≤1051≤ai≤105。
输入样例1:
输出样例1:
输入样例2:
输出样例2:
3
#include<iostream>
using namespace std;
const int N = 100010;
int n;
int cnt[N];
int main(){
cin >> n;
while(n--){
int x;
cin >> x;
cnt[x]++;
}
int res = 1;
for(int d = 2; d <= N; ++d){
int t = 0;
for(int j = d; j <= N; j += d){
t += cnt[j];
}
res = max(res,t);
}
cout << res << endl;
return 0;
}