编写c程序,输入两个整数mn,求这两个数的最大公约数和最小公倍数
时间: 2023-11-17 15:41:07 浏览: 76
下面是一个用C语言编写的程序,根据输入的两个整数mn,计算它们的最大公约数和最小公倍数:
```c
#include <stdio.h>
int main() {
int m, n, i, gcd, lcm;
printf("请输入两个整数m和n:");
scanf("%d %d", &m, &n);
// 计算最大公约数
for (i = 1; i <= m && i <= n; ++i) {
if (m % i == 0 && n % i == 0) {
gcd = i;
}
}
// 计算最小公倍数
lcm = (m * n) / gcd;
printf("最大公约数为:%d\n", gcd);
printf("最小公倍数为:%d\n", lcm);
return 0;
}
```
你可以将上述代码保存为一个以`.c`为后缀的文件,然后使用C编译器进行编译和运行。程序会要求用户输入两个整数m和n,然后计算并输出它们的最大公约数和最小公倍数。
相关问题
c语言输入两个正整数mn,求最大公约数和最小公倍数
在C语言中,计算两个正整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)通常涉及到欧几里得算法(Euclidean Algorithm)用于找到GCD,然后利用公式 `LCM(a, b) = |a * b| / GCD(a, b)` 来计算LCM。
下面是一个简单的步骤说明:
1. **求最大公约数** (GCD):
- 使用辗转相除法(也称欧几里得算法),即对于两个数 a 和 b,如果 b 不为零,则它们的最大公约数等于 b 和 a mod b 的最大公约数。这个过程会一直持续到余数为零,此时的b就是最大公约数。
```c
int gcd(int m, int n) {
if (n == 0)
return m;
else
return gcd(n, m % n);
}
```
2. **求最小公倍数** (LCM):
- 计算两个数的乘积,然后除以它们的最大公约数。
```c
int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
```
你可以将这两个函数结合起来,先计算GCD,再计算LCM。
```c
#include <stdio.h>
// 定义 GCD 函数
int gcd(int a, int b);
int main() {
int m, n;
printf("请输入两个正整数mn:");
scanf("%d%d", &m, &n);
// 计算并打印 GCD 和 LCM
int result_gcd = gcd(m, n);
int result_lcm = lcm(m, n);
printf("最大公约数(GCD): %d\n", result_gcd);
printf("最小公倍数(LCM): %d\n", result_lcm);
return 0;
}
// 完整的 GCD 函数实现
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
输入两个正整数mn,求求最大公约数和最小公倍数
输入两个正整数m和n,可以通过以下步骤求得它们的最大公约数和最小公倍数:
1. 从m和n中较小的数开始,从该数到1依次判断是否同时能被m和n整除,找到第一个能被整除的数即为它们的最大公约数。
2. 最小公倍数等于两数之积除以它们的最大公约数。
以下是代码实现:
```python
# 最大公约数
def gcd(m, n):
if m < n:
m, n = n, m
while n != 0:
m, n = n, m % n
return m
# 最小公倍数
def lcm(m, n):
return m * n // gcd(m, n)
m = int(input("请输入第一个正整数:"))
n = int(input("请输入第二个正整数:"))
print("它们的最大公约数为:", gcd(m, n))
print("它们的最小公倍数为:", lcm(m, n))
```
阅读全文