比赛 NOIP2023模拟赛4 评测结果 AAAAAAAAAA
题目名称 最大公约数 最终得分 100
用户昵称 Murasame 运行时间 1.041 s
代码语言 C++ 内存使用 4.85 MiB
提交时间 2023-11-16 12:59:18
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,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;
		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<=1e6;i++){
		if(g[i]!=0){
			ans=min(ans,n-g[i]);
		}
	}
	cout<<ans<<endl;
	return 0;
}