/*-------------------------------------------------------------------
功能:求两个正整数m和n的最大公约数。(使用while)
---------------------------------------------------------------------*/
#include "stdio.h"
void main()
{
int r,m,n,t;
printf("Enter m,n:");
scanf("%d,%d",&m,&n);
printf("m=%d,n=%d",m,n);
r=m%n;
/**********Program**********/
while (r > 0)
{
m = n;
n = r;
r = m % n;
}
/********** End **********/
printf("h.c.f=%d\n",n);
}
辗转相除法的代数描述是这样的,假设我们有两个数字[12921,4234]。我们将两数中较大的那一个看作是被除数A,将较小的那一个看作是除数B,二者相除的商记作C,余数记作D。这样我们就可以得到一个等式:A = B×C + D。而辗转相除法的所要用到的原理则是:(A , B) = (B , D)。有了这个公式我们就可以进行计算了,最后算出答案是73。
详细的计算过程是这样的:
最后就可以得到73是最终的结果,也就是二者的最大公约数。