编程题(5)输入两个正整数m和n,求其最大公约数和最小公倍数。 提示:在循环中,用较大数(初始值为m、n中的较大数)除以较小的数(初始值为m、n中的较小数),然后将小的一个数作为下一轮循环中较大的数,较大数除以较小数所取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0时,返回较大的数,此数即为m和n的最大公约数。最小公倍数为两数之积除以最大公约数。
时间: 2023-05-16 12:04:56 浏览: 69
答案:
```python
m = int(input("请输入第一个正整数m:"))
n = int(input("请输入第二个正整数n:"))
# 求最大公约数
a = max(m, n)
b = min(m, n)
while b != 0:
a, b = b, a % b
gcd = a
# 求最小公倍数
lcm = m * n // gcd
print("最大公约数为:", gcd)
print("最小公倍数为:", lcm)
```
输出:
```
请输入第一个正整数m:12
请输入第二个正整数n:18
最大公约数为: 6
最小公倍数为: 36
```
相关问题
输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 编程提示:利用辗除法。
好的,可以使用以下的 Python 代码来解决这个问题:
```python
def gcd(a, b):
if b == 0:
return a
return gcd(b, a % b)
def lcm(a, b):
return a * b // gcd(a, b)
m = int(input("请输入第一个正整数 m:"))
n = int(input("请输入第二个正整数 n:"))
print("最大公约数为:", gcd(m, n))
print("最小公倍数为:", lcm(m, n))
```
这段代码中,我们使用了递归的方式来实现求最大公约数。如果 `b` 等于 0,那么 `a` 就是最大公约数;否则,我们就继续递归求解 `b` 和 `a % b` 的最大公约数,直到 `b` 等于 0。
另外,我们还定义了一个函数 `lcm` 来求最小公倍数,它通过先求出最大公约数,然后用两个数的积除以最大公约数,即可得到最小公倍数。
C语言编程实现:输入两个正整数m和n,求其最大公约数和最小公倍数。
以下是两种C语言编程实现输入两个正整数m和n,求其最大公约数和最小公倍数的例子:
引用:
```c
#include <stdio.h>
int main() {
int x, y, a, b, temp, r = 0, min = 0;
printf("请输入两个整数:\n");
scanf("%d%d", &x, &y);
if (x < y) { //交换大小顺序,大数对小数取余
temp = x;
x = y;
y = temp;
}
a = x;
b = y;
r = a % b;
while (r != 0) { //辗转相除求最大公因数,b即为最后的最大公因数
a = b;
b = r;
r = a % b;
}
min = (x * y) / b; //最小公倍数
printf("最大公因数:%d\n最小公倍数:%d\n", b, min);
return 0;
}
```
引用:
```c
#include <stdio.h>
int main() {
int a, b, i, j;
int max = 0;
printf("请输入两个整数:\n");
scanf("%d%d", &a, &b);
for (i = a;;i++) {
if (i % a == 0 && i % b == 0) { //求最小公倍数
break;
}
}
for (j = b;;j--) {
if (a % j == 0 && b % j == 0) { //求最大公约数
break;
}
}
printf("最大公约数:%d\n最小公倍数:%d\n", j, i);
return 0;
}
```