输入两个整数 aa 和 bb,请你编写一个函数,int gcd(int a, int b)
, 计算并输出 aa 和 bb 的最大公约数。
定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。
求134和18的最大公约数
134 / 18 = 7 ... 8
18 / 8 = 2 ... 2
8 / 2 = 4 ... 0
我们可以看到,
134 / 18 = 7 ... 8
第一次,我们求出余数8,只需找到18与8的最大公约数即可,之后我们就开始求。再次使用辗转相除法即可
18 / 8 = 2 ... 2
第二次,我们求出余数2,只需找到8与2的最大公约数即可,之后我们开始球。再次使用辗转相除法即可。
8 / 2 = 4 ... 0
第三次,我们求出余数0,可以了。这时候的被除数就是最大公约数,即2.
#include <iostream>
using namespace std;
int main(){
int a,b;
cin >>a>>b;
while(b){
int temp=a%b; //求余数
a=b; //被除数b就变为了除数
b=temp; //其所求余数就变为了被除数
}
cout <<a;
}