最大公约数和最小倍数,多组输入,第一行输入下面的数据组数量,输入两个正整数,两个整数之间用空格分开。数据保证在int范围内,用C语言写出代码
时间: 2024-12-15 22:22:08 浏览: 17
最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)是一对数学概念,用于两个或多个正整数之间的关系。GCD表示能够同时整除它们的最大正整数,而LCM则是使得某个数能被所有输入整数整除的最小正整数。
以下是使用C语言计算两个正整数的最大公约数和最小公倍数的一般算法。考虑到有多组输入的情况,我们可以循环处理每一对数字:
```c
#include <stdio.h>
// 使用欧几里得算法计算最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 计算最小公倍数,利用公式 lcm(a, b) = |a * b| / gcd(a, b)
int lcm(int a, int b) {
return abs(a * b) / gcd(a, b);
}
int main() {
int num_of_pairs, i, j, a, b;
// 获取输入数据组的数量
scanf("%d", &num_of_pairs);
for (i = 0; i < num_of_pairs; ++i) {
scanf("%d %d", &a, &b); // 读取每组输入的两个数
printf("对于输入的 a=%d 和 b=%d,\n", a, b);
printf("最大公约数(GCD)为: %d\n", gcd(a, b));
printf("最小公倍数(LCM)为: %d\n", lcm(a, b));
// 如果需要继续计算下一对,可以去掉这句换行
// printf("\n");
}
return 0;
}
```
在这个程序中,`gcd`函数实现了欧几里得算法,`lcm`函数则基于GCD计算LCM。然后在`main`函数中,我们首先获取数据组的数量,接着遍历每一组输入,计算并打印出GCD和LCM。
阅读全文