最大公约数和最小公倍数C语言程序编写
时间: 2025-01-30 10:08:10 浏览: 36
好的,下面我会为你介绍如何用 C 语言编写计算最大公约数 (GCD) 和最小公倍数 (LCM) 的程序。
### 计算两个整数的最大公约数
最大公约数是指能同时整除给定的两个或更多个整数的最大正整数。求解 GCD 可以通过辗转相除法(也称欧几里得算法)实现:
```c
#include <stdio.h>
// 函数声明
int gcd(int a, int b);
int main() {
int num1 = 48; // 示例数字1
int num2 = 60; // 示例数字2
printf("两数 %d 和 %d 的最大公约数是:%d\n", num1, num2, gcd(num1, num2));
return 0;
}
// 定义gcd函数
int gcd(int a, int b){
if(b == 0)
return a;
else
return gcd(b, a%b);
}
```
此段代码首先包含了标准输入输出库`#include <stdio.h>`用于后续打印结果;接着定义了递归形式的 `gcd()` 函数,并在主函数中调用了该函数对示例数值进行了测试。
### 计算两个整数的最小公倍数
最小公倍数则是指能够被这两个数都整除的最小正整数。我们可以通过先找出它们之间的最大公约数再利用公式 LCM(a,b)=|a×b|÷GCD(a,b) 来获取最小公倍数:
```c
#include <stdio.h>
// 已有的gcd函数...
unsigned long lcm(unsigned int a,unsigned int b){
unsigned long product=(long)a*(long)b;
while(gcd(a,b)>1){
a /= gcd(a,b);
}
return product/a;
}
int main(){
int m=15,n=17;
printf("%u 和 %u 的最小公倍数是:%lu \n",m , n,lcm(m,n));
return 0;
}
```
请注意上述lcm函数并不是最优的方式,在实际应用中可以直接基于已经给出的gcd函数简化为一行表达式:`return abs((long)a * b)/gcd(a,b)`.
以上就是关于C语言下求取最大公约数及最小公倍数的基本方法啦!
阅读全文
相关推荐


















