方法一:
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int m,n,c;
cin>>m>>n;
gcd = m > n ? n : m;
while(c > 1&&(m % c != 0||n % c != 0)){
c--;
}
cout<<c;
return 0;
}
方法二:辗转相除法:欧几里德算法
用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int m,n;
cin>>m>>n;
int r = m % n;
while(r!=0){
m = n;
n = r;
r = m % n;
}
cout<<"最大公约数="<<r;
return 0;
}