//1.辗转相除法(欧几里得算法)
原理:用较大数除以较小数,再用出现过的余数除以较小数,如此反复直到余数为0,此时除数就是最大公因数。例如:6%4=2,4%2=0
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int max=m;//初始化最大值
int min=n;//初始化最小值
if(n>m)
{
max=n;
min=m;
}//找到最大最小值
int c=max%min;
while(c)
{
max=min;
min=c;
c=max%min;
}
printf("%d",min);
return 0;
}
//2.更相减损法
原理:用较大数减去较小数,再用出现的差值减去较小数,直到差为0,此时较小数就是最大公因数
#include<bits/stdc++.h>
using namespace std;
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int max=m;//初始化最大值
int min=n;//初始化最小值
if(n>m)
{
max=n;
min=m;
}//找到最大最小值
int c=max-min;//求差值
while(c)
{//while循环里进行更相减损法
max=min;
min=c;
c=max-min;
}
printf("%d",min);
return 0;
}