辗转相除法(又名欧几里德法),C语言中用于计算两个正整数a,b的最大公约数和最小公倍数,实质它依赖于下面的定理:
gcd(a,b) =a(b=0)
gcd(a,b)=gcd(b,a mod b)(b!=0)
其算法过程为:(前提)设两数为a、b,其中a 做被除数,b做除数,temp为余数
- 大数放a中、小数放b中;
- 求a/b的余数;
- 若temp=0,则b为最大公约数;
- 如果temp!=0则把b的值给a,temp的值给b;
- 返回第2步。
算法实现
#include<stdio.h>
int divisor (int a,int