记录编号 584831 评测结果 AAAAAAAAAA
题目名称 最大公约数 最终得分 100
用户昵称 Gravatarムラサメ 是否通过 通过
代码语言 C++ 运行时间 1.182 s
提交时间 2023-11-16 13:12:37 内存使用 4.85 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,maxn=-1,tmp,v,ans=0x3fffffff;
int g[1000010];
void get_gcd(int x){
	for(int i=1;i<=sqrt(x);i++){
		if(x%i==0){
			g[i]++;
			g[x/i]++;
		}
	}
	int tmp=sqrt(x);
	if(tmp*tmp==x){
		g[tmp]--;
	}
}
int main(){
	freopen("gcd.in","r",stdin);
	freopen("gcd.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	memset(g,0,sizeof(g));
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>tmp;
		maxn=max(maxn,tmp);
		if(i==1){
			v=tmp;
		}
		else{
			v=__gcd(v,tmp);
		}
		get_gcd(tmp);
	}
	if(v==1){
		cout<<n-1<<endl;
		return 0;
	}
	for(int i=v+1;i<=sqrt(maxn);i++){
		if(g[i]!=0){
			ans=min(ans,n-g[i]);
		}
	}
	cout<<ans<<endl;
	return 0;
}