求两个数的最大公约数可以用欧几里得算法(gcd算法)又称辗转相除法,gcd(a,b) = gcd(b,a%b)。代码如下:
#include <iostream>
using namespace std;
//递归算法
int gcd1(int a, int b){
return !a?b:gcd1(b%a,a);
}
//迭代算法,这个效率能高一些
int gcd2(int a, int b){
int r;
while(a){
r=b%a;
b=a;
a=r;
}
return b;
}
int main(){
int a=12,b=16;
cout<<gcd2(a,b);
return 0;
}