编程:求两个正整数m,n,输入两个数的最大公约数.注意:输入时,允许用户随意先输入大的或小的整数(C语言)
时间: 2024-02-25 19:57:42 浏览: 71
好的,以下是 C 语言代码实现:
```c
#include <stdio.h>
int main() {
int m, n, temp;
printf("请输入两个正整数:\n");
scanf("%d%d", &m, &n);
// 交换 m 和 n 的值,使得 m > n
if (m < n) {
temp = m;
m = n;
n = temp;
}
while (n != 0) {
temp = m % n;
m = n;
n = temp;
}
printf("最大公约数为:%d\n", m);
return 0;
}
```
在这个代码中,我们使用了 `scanf()` 函数来让用户从键盘上输入两个正整数。接着,我们使用了 `if` 语句来判断哪个数较大,如果是第一个数较小,则交换两个数的值,使得第一个数较大。然后,我们使用了一个 `while` 循环来求出两个数的最大公约数,具体做法是:用较大的数除以较小的数,得到余数,然后将较小的数赋值为原来的余数,再用新的较小的数去除以原来的余数,重复这个过程,直到余数为0,此时的较小的数就是两个数的最大公约数。最后,我们使用 `printf()` 函数来输出结果。
希望这个代码对您有所帮助!
相关问题
C语言编程:求两个正整数m、n,输出两个数的最大公约数。注意:输入时,允许用户随意先输入大的或小的整数。
这是一个很不错的编程题目。以下是一个使用辗转相除法求解最大公约数的 C 语言代码示例:
```
#include <stdio.h>
int main() {
int m, n, remainder;
printf("请输入两个正整数m、n:");
scanf("%d%d", &m, &n);
while (n != 0) {
remainder = m % n;
m = n;
n = remainder;
}
printf("最大公约数为:%d\n", m);
return 0;
}
```
代码说明:首先从用户输入中获取两个正整数 m 和 n,然后根据辗转相除法求解它们的最大公约数。具体过程是:每次用 m 除以 n,得到余数 remainder,然后将 n 赋值给 m,remainder 赋值给 n,直到 n 为 0,此时的 m 即为最大公约数。最后将 m 输出即可。
//编程14:输入两个正整数m和n,求最大公约数和最小公倍数。
在编程中,计算两个正整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)是一个常见的数学问题。这两个值对于理解两个数之间的关系非常重要。以下是使用欧几里得算法(Euclidean Algorithm)求最大公约数的基本步骤:
**求最大公约数 (GCD):**
1. 如果 `n` 等于 0,则 `m` 就是 GCD,因为任何数除以0都是未定义的。
2. 否则,将 `m` 和 `n` 中的较小值赋给 `n`,较大的值赋给 `m`。
3. 重复步骤1和2,直到 `n` 变为 0。
**求最小公倍数 (LCM):**
1. 首先,计算两数的最大公约数(已经通过上述方法得到)。
2. 最小公倍数等于两数乘积除以它们的最大公约数。
如果你需要具体的代码示例,这里是一个简单的Python版本:
```python
def gcd(m, n):
while n != 0:
m, n = n, m % n
return m
def lcm(m, n):
return m * n // gcd(m, n)
# 输入两个正整数
m = int(input("请输入第一个正整数m: "))
n = int(input("请输入第二个正整数n: "))
gcd_val = gcd(m, n)
lcm_val = lcm(m, n)
print(f"最大公约数 (GCD): {gcd_val}")
print(f"最小公倍数 (LCM): {lcm_val}")
阅读全文