文章
79
粉丝
221
获赞
46
访问
202.7k
#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。
登录后发布评论
暂无评论,来抢沙发