辗转相除法,又称欧几里德算法(Euclidean Algorithm),是求两个数的最大公约数(greatest common divisor)的一种方法。用较大的数除以较小的数,再以除数和余数反复做除法运算,当余数为0时,取当前算式除数为最大公约数。
30 / 18 = 1 余 12
18 / 12 = 1 余 6
12 / 6 = 2 余 0
所以,30和18的最大公约数为6。
最小公倍数是根据最大公约数求得的,最小公倍数 = 两数乘积 / 最大公约数。
代码如下:
#include<stdio.h>
int main()
{
int a = 30, b = 18;
int d = a * b;
int c = 0;
while (c = a % b)
{
a = b;
b = c;
}
printf("最大公约数是%d\n", b);
printf("最小公倍数是%d\n", d / b);
return 0;
}