第一次算法课上机老师让我们用两种方法求最大公约数:
辗转相减法:
#include<iostream>
#include<algorithm>
using namespace std;
//如果这两个数相等则是解,否则每次取相减后3个数中最小的两个
int gcd(int a,int b){
if(a==b)return a;
return a>b?gcd(a-b,b):gcd(b-a,a);
}
int main(){
int a,b;
cin>>a>>b;
cout<<gcd(a,b)<<"\n";
return 0;
}
辗转相除法:
#include<iostream>
#include<algorithm>
using namespace std;
//辗转相除法就不用多说了吧
int gcd(int a,int b){return a%b==0?b:gcd(b,a%b);}
int main(){
int a,b;
cin>>a>>b;
cout<<gcd(a,b)<<"\n";
return 0;
}