最大公约数和最小倍数 c语言 while循环
时间: 2024-10-14 21:07:09 浏览: 50
如何用c语言求最大公约数和最小公倍数
最大公约数(Greatest Common Divisor, GCD)是指两个或多个整数共有的最大的正因数。最小公倍数(Least Common Multiple, LCM)则是指两个或多个整数共有的最小的能被它们整除的正整数。在 C 语言中,你可以使用 while 循环来计算这两个数的 GCD 和 LCM。
首先,我们可以用欧几里得算法(Euclidean Algorithm)计算 GCD。这个算法基于这样的原理:对于任意两个正整数 a 和 b,a 能够整除 b 的余数 r(即 a = bq + r),那么 a 和 b 的最大公约数等于 b 和 r 的最大公约数。
以下是计算 GCD 的 C 语言示例:
```c
#include <stdio.h>
// Function to calculate GCD using Euclidean algorithm
int gcd(int a, int b) {
while (b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
int main() {
int num1, num2;
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("The GCD of %d and %d is %d\n", num1, num2, result);
// Once you have the GCD, LCM can be calculated as LCM(a, b) = |a * b| / GCD(a, b)
int lcm = abs(num1 * num2) / result; // abs() used to handle negative values
printf("The LCM of %d and %d is %d\n", num1, num2, lcm);
return 0;
}
```
在这个程序中,我们先输入两个数,然后通过 while 循环逐步找到两者的最大公约数。接下来,利用 LCM 计算公式得到最小公倍数。
阅读全文