#include <stdio.h>
int main(){
int a, b;
printf("Please input two integers: ");
scanf("%d %d", &a, &b); // 获取用户输入的两个整数
int sum = a * b; // 计算两个整数的乘积,用于计算最小公倍数
// 如果 a 比 b 小,则交换它们的值,确保 a 是较大的那个数
if(a < b){
int t = a;
a = b;
b = t;
}
// 使用辗转相除法求最大公约数
while(a % b != 0){
int t = a % b; // 计算余数
a = b; // 更新被除数为除数
b = t; // 更新除数为余数
}
// 输出最大公约数
printf("The greatest common divisor is: %d\n", b);
// 计算最小公倍数并输出
printf("The least common multiple is: %d\n", sum / b);
return 0;
}
结果
这段代码实现了计算两个整数的最大公约数(GCD)和最小公倍数(LCM)。让我们逐步解释代码的各个部分。
主函数 main()
- 首先,提示用户输入两个整数
a
和b
。 - 使用
scanf()
函数获取用户输入的两个整数的值。 - 计算两个整数的乘积
sum = a * b
。 - 根据辗转相除法求最大公约数和最小公倍数的思路进行计算。
- 最后,输出计算得到的最大公约数和最小公倍数。
辗转相除法求最大公约数和最小公倍数
- 首先,判断
a
和b
的大小,确保a
是较大的那个数。 - 使用 while 循环,持续执行以下步骤直到余数为0:
- 用
a
除以b
,将余数存储在临时变量t
中。 - 将
b
更新为原来的a
。 - 将
t
更新为原来的b
。
- 用
- 循环结束后,
b
即为最大公约数(GCD)。 - 由于最小公倍数(LCM)等于两数之积除以它们的最大公约数,因此用
sum
除以b
得到最小公倍数(LCM)。
这样,代码就完成了计算最大公约数和最小公倍数的任务,并输出结果。