使用 STL,不符合题目要求
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<__gcd(a,b);
}
自己实现一个 gcd(),内含三目运算符
但是这个还是不符合要求,因为用的是辗转相除法
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
int main(){
int a,b;
cin>>a>>b;
cout<<gcd(a,b);
}
符合要求的正解
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
if(a==b) return a;
if(a>b) return gcd(a-b,b);
return gcd(b-a,a);
}
int main(){
int a,b;
cin>>a>>b;
cout<<gcd(a,b);
}
这个在输入的数字较小的时候跑起来反而更慢些,而辗转相除法因为用到取模遇到大数时会慢些,个人认为还是前者更为实用。