更相减损法:也叫更相减损术,是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合。
#include<stdio.h>
int main()
{
int a, b;
int count=1;
scanf("%d%d", &a, &b);
while (a != b)
{
while (a % 2 == 0 && b % 2 == 0)//a,b为偶数时用count记录整除2的次数
{
a /= 2;
b /= 2;
count = count * 2;
}
//假如两个数不为偶数执行下面语句,即使为偶数执行以下语句也可求出最大公约数,但有上面语句程序更完整一些,对于下面语句有没有上面语句效率都一样
if (a > b)
a -= b;
else
b -= a;
}
printf("m、n的最大公约数为%d", a*count);
return 0;
}