文章

79

粉丝

221

获赞

45

访问

164.1k

头像
求若干个数的最大值与最小值和最大值与最小值的最大公约数
P1426 中国科学技术大学机试题
发布于2023年3月29日 15:14
阅读数 1.6k

#include <iostream>
using namespace std;
#define INT_MAX 99999999
#define INT_MIN -99999999
int Gcd(int a,int b){
	if(a<b)
		swap(a,b);
	if(b==0)
		return a;
	return Gcd(b,a%b);
}
int main() {
	int n,min=INT_MAX,max=INT_MIN;
	cin>>n;
	for(int i=0;i<n;i++){
		int a;
		cin>>a;
		if(a>max)
			max=a;
		if(a<min)
			min=a;
	}
	cout<<min<<" "<<max<<" "<<Gcd(max,min);
	return 0;
}

由欧几里得算法得知,当a大于b时,a与b的最大公约数即为b与a除以b的余数的最大公约数。以此创造递归式,设Gcd(a,b)为a与b的最大公约数,则Gcd(a,b)=Gcd(b,a%b),递归出口为b==0,则a与0的最大公约数为a。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发