公式:
前提:a、b都是正整数且a大于b
过程(用c代码实现):
do
{ int r=a%b;a=b;b=r;}
while(r!=0)
原理:a、b都有一个最大公约数m,设a=xm,b=ym,x,y两者互为质数,当进行辗转相除法时,r=(x%y)*m,a=y*m,b=(x%y)*m,而且,y<x,(x%y)<y,故a,b前面的质数在不断缩小,直到b前面的质数为1,才停止,此时a的值就是最大公约数的值。且每次a,b至少减少最大公约数的大小,故比一个一个判断的算法效率高。
公式:
前提:a、b都是正整数且a大于b
过程(用c代码实现):
do
{ int r=a%b;a=b;b=r;}
while(r!=0)
原理:a、b都有一个最大公约数m,设a=xm,b=ym,x,y两者互为质数,当进行辗转相除法时,r=(x%y)*m,a=y*m,b=(x%y)*m,而且,y<x,(x%y)<y,故a,b前面的质数在不断缩小,直到b前面的质数为1,才停止,此时a的值就是最大公约数的值。且每次a,b至少减少最大公约数的大小,故比一个一个判断的算法效率高。