学习写了多种求最大公因数的代码,还是看MOOC翁恺老师的辗转相除法最简洁易懂。
辗转相除法: 又称欧几里得算法,用于计算两个非负整数的最大公约数。以除数和余数反复做除法运算,当余数为0时,取当前式子除数为最大公约数。
定理: 两个整数的最大公约数,等于其中较小的数和两数相除余数的最大公约数。
计算公式: gcd(a,b) = gcd(b,a mod b)
代码
#include<stdio.h>
int main()
{
int a
=0;
int b
=0;
int r
=0;
scanf(输入两个数“
%d
%d”
,&a
,&b
);
while(b
!=0)
{
r
=a
%b
;
a
=b
;
b
=r
;
}
priintf("最大公约数是%d\n",a
);
return 0;
}