GCD的进化论
  • 板块灌水区
  • 楼主QAQ_liu
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/8 21:29
  • 上次更新2024/3/8 21:54:03
查看原帖
GCD的进化论
1032871
QAQ_liu楼主2024/3/8 21:29

此为GCD的方法,与进化无关

long long ago (作者英语120分考了97分),有一位智者经过很久很久的研究得出最大公因数的求法,大致为:

int maxn=INT_MIN,n,m;
for(int i=1;i<=min(n,m);i++){
   if(n%i==0&&m%i==0) maxn=max(maxn,i);
}
	cout<<maxn;

但是最大公约数这个名字太麻烦了的,所以一位聪明的长老将最大公约数命名为:GCD 紧接着这一位长者,又一个GCD方法被研究了出来,大致为:

int a,b;
while(b!=0){
	int f=a;
	a=b;
	b=f%b;
}
	cout<<a;

可是还有什么更简便的方法呢? 有

int gcd(int a,int b){
	if(b==0) return a;
	return gcd(b,a%b);
}
int main{
	int a,b;
	cin>>a>>b;
	cout<<gcd(a,b);
}

可是它容易超时,所以GCD的最终版本出来了:

int gcd(int a,int b){
	while(b!=0){
		int f=a;
		a=b;
		b=f%b;
	}
}
int main{
	int a,b;
	cin>>a>>b;
	cout<<gcd(a,b);
}

一个完美的GCD就出来啦!


给个关注吧!

2024/3/8 21:29
加载中...