思路:假定98和63的最大公约数是M,那么98=a*M,63=b*M
如果要求两个数X,Y的最大公约数T,把X,Y看成由若干个T组成的数,X:TTTTTT...... Y:TTTTTT...... 那么X-Y是什么意思呢?!意思就是X比Y多的T构成的数,这样减的话这个差永远是整数个T,于是一直这样减下去,最后减出来肯定只有一个T,所以T是多少就显示出来了。具体程序如下所示:
#include<stdio.h>
#include<windows.h>
#include<math.h>
int max_common_divisor(int a, int b)
{
while (1)
{
if (a > b)
{
a -= b;
}
else if (a < b)
{
b -= a;
}
else
{
return a;
}
}
}
int main()
{
int a = 100;
int b = 25;
printf("%d, %d max_common_divisor is : %d\n", a, b, max_common_divisor(a, b));
system("pause");
return 0;
}