简介
在本实验中,你将学习如何使用 C 语言编程找到两个整数的最小公倍数(LCM)。本实验涵盖了逐步的过程,从从用户输入读取两个整数开始,然后实现公式 LCM = (a*b)/GCD(a,b) 来计算 LCM,最后打印结果。在本实验结束时,你将对如何应用数论概念(如用于求最大公约数(GCD)的欧几里得算法)来解决 C 语言中的实际问题有扎实的理解。
在本实验中,你将学习如何使用 C 语言编程找到两个整数的最小公倍数(LCM)。本实验涵盖了逐步的过程,从从用户输入读取两个整数开始,然后实现公式 LCM = (a*b)/GCD(a,b) 来计算 LCM,最后打印结果。在本实验结束时,你将对如何应用数论概念(如用于求最大公约数(GCD)的欧几里得算法)来解决 C 语言中的实际问题有扎实的理解。
在这一步中,你将学习如何在 C 语言编程中从用户输入读取两个整数,这是计算最小公倍数(LCM)的第一步。
首先,让我们为我们的 LCM 程序创建一个新的 C 文件:
cd ~/project
nano lcm.c
现在,添加以下代码来读取两个整数:
#include <stdio.h>
int main() {
int a, b;
printf("输入两个正整数:\n");
printf("第一个数字:");
scanf("%d", &a);
printf("第二个数字:");
scanf("%d", &b);
printf("你输入的是:%d 和 %d\n", a, b);
return 0;
}
编译并运行程序:
gcc lcm.c -o lcm
./lcm
示例输出:
输入两个正整数:
第一个数字:12
第二个数字:18
你输入的是:12 和 18
让我们来分析一下这段代码:
scanf() 函数用于从用户读取整数输入%d 格式说明符用于整数输入&a 和 &b 传递输入值将被存储的内存地址在这一步中,你将使用公式 LCM(a,b) = (a*b)/GCD(a,b) 来实现最小公倍数(LCM)的计算。我们将首先创建一个函数,使用欧几里得算法来计算最大公约数(GCD)。
使用以下代码更新 lcm.c 文件:
#include <stdio.h>
// 使用欧几里得算法计算 GCD 的函数
int calculateGCD(int a, int b) {
while (b!= 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 计算 LCM 的函数
int calculateLCM(int a, int b) {
return (a * b) / calculateGCD(a, b);
}
int main() {
int a, b, lcm;
printf("输入两个正整数:\n");
printf("第一个数字:");
scanf("%d", &a);
printf("第二个数字:");
scanf("%d", &b);
lcm = calculateLCM(a, b);
printf("%d 和 %d 的最小公倍数是:%d\n", a, b, lcm);
return 0;
}
编译并运行程序:
gcc lcm.c -o lcm
./lcm
示例输出:
输入两个正整数:
第一个数字:12
第二个数字:18
12 和 18 的最小公倍数是:36
让我们来分析一下关键部分:
calculateGCD() 实现了欧几里得算法来找到最大公约数calculateLCM() 使用公式 LCM(a,b) = (a*b)/GCD(a,b)在这最后一步中,你将运行最小公倍数(LCM)程序,并针对不同的输入组合验证其输出。我们将使用各种整数对来测试该程序,以演示最小公倍数的计算。
编译程序(如果尚未编译):
cd ~/project
gcc lcm.c -o lcm
使用不同的输入组合运行程序:
./lcm << EOF
12
18
EOF
12 和 18 的示例输出:
输入两个正整数:
第一个数字:12
第二个数字:18
12 和 18 的最小公倍数是:36
让我们再试一个示例:
./lcm << EOF
15
25
EOF
15 和 25 的示例输出:
输入两个正整数:
第一个数字:15
第二个数字:25
15 和 25 的最小公倍数是:75
需要理解的关键点:
为了使程序更健壮,你可以添加输入验证:
nano lcm.c
更新 main() 函数以包含输入验证:
int main() {
int a, b, lcm;
printf("输入两个正整数:\n");
printf("第一个数字:");
scanf("%d", &a);
printf("第二个数字:");
scanf("%d", &b);
// 输入验证
if (a <= 0 || b <= 0) {
printf("错误:请仅输入正整数。\n");
return 1;
}
lcm = calculateLCM(a, b);
printf("%d 和 %d 的最小公倍数是:%d\n", a, b, lcm);
return 0;
}
重新编译并测试更新后的程序:
gcc lcm.c -o lcm
./lcm
在本实验中,你将学习如何在 C 语言编程中找到两个整数的最小公倍数(LCM)。首先,你将从用户输入中读取两个整数。然后,你将通过创建一个使用欧几里得算法计算最大公约数(GCD)的函数来实现公式 LCM(a,b) = (a*b)/GCD(a,b)。最后,你将打印计算出的最小公倍数。
关键学习要点包括:使用scanf()读取整数输入、实现欧几里得算法以找到最大公约数,以及使用该公式计算最小公倍数。在本实验结束时,你将对如何在 C 语言中找到两个数的最小公倍数有扎实的理解。