利用更相减损术求两个整数的最大公约数,即每次将较大的数变成大数减去小数的值
#include <iostream>
#include <math.h>
using namespace std;
int min(int n, int m);
int main(){
int a, b, t;
cin >> a >> b;
while(a!=b){
t=min(a,b);
a=abs(a-b);
b=t;
}
cout << a << endl;
return 0;
}
int min(int n, int m){
if(n<m)
return n;
else
return m;
}
利用辗转相除法得到两个数最大公约数
#include <iostream>
using namespace std;
int main(){
int a, b, i;
cin >> a >> b;
i = a;
while(b%a != 0){
i = b%a;
b = a;
a = i;
}
cout << i <<endl;
return 0;
}