求C语言大神讲解一下这个程序算法的意思,就是为什么要这样算?我能看懂每句的意思,不懂这个算法的道理.

问题描述:

求C语言大神讲解一下这个程序算法的意思,就是为什么要这样算?我能看懂每句的意思,不懂这个算法的道理.
1个回答 分类:综合 2014-11-06

问题解答:

我来补答
这个函数是实现的目的是求ab两数的最大公约数,采用的方法是辗转相除法.
while(b)当两数相除余数为0时,返回约数a.
例:a=8,b=6; 第一次执行函数 a变为6,b变为2; 第二次执行,a变为2,b变为0;
返回2.
再问: ��Щ���ܿ��� ���Dz������������� Ϊʲô�������õ��ľ������Լ��
再答: ֤�� ������Ϊa��b(a>b������a��b���Լ��(a��b���IJ������£���b��a����a��b=q......r1(0��r1������r1=0����a��b)=b����r1��0��������r1��b����b��r1=q......r2 (0��r2��.��r2=0����a��b)=r1����r2��0���������r2��r1�����������ȥ��ֱ�������Ϊֹ�������һ���������Ϊ��a��b���� ԭ�� ������Ϊa��b(b1������m=kn+xd=kyd+xd=(ky+x)d����a=mc=(ky+x)dc��b=nc=ycd����a��b���Լ���Ϊcd�����c����ǰ�����ì�ܡ� �Ӷ��֪gcd(b,r)=c���̶�gcd(a,b)=gcd(b,r���� ֤�ϡ�
 
 
展开全文阅读
剩余:2000