#include <stdio.h>
int main()
{
int a = 6;
int b = 12;
int r;
int sum = a * b;
r = a % b;
while(r!=0){
a = b;
b = r;
r = a % b;
}
printf("最大公约数%d\n", b);
printf("最小公倍数%d\n", sum/b);
return 0;
}
学习到:
- 辗转相除法求最大公约数
eg:
1997 / 615 = 3...152
625 / 152 = 4 ...7
152 / 7 = 21 ... 5
7 / 5 = 1 ...2
5 / 2 = 2 ...1
2 / 1 = 2 ...0
模式:
大数/小数=商...余数
小数/余数=商1...余数1
余数/余数1=商2...余数2
循环往复,直至余数为零
此时1997与615最大公约数为1(余数为0式子中的除数即是最大公约数)
另外:最初大数/小数与小数/大数结果是一样的,区别是多运算几次 - 最大公倍数与最小公约数关系
求a与b最大公约数与最小公倍数
假设最大公约数为m
则最小公倍数n=a*b/m
3.while与for循环使用情况
while适合知道循环停止条件
for适合知道循环次数