输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 编程提示:利用辗除法。
时间: 2023-11-10 20:32:52 浏览: 90
好的,可以使用以下的 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` 来求最小公倍数,它通过先求出最大公约数,然后用两个数的积除以最大公约数,即可得到最小公倍数。
相关问题
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
答案:可以使用以下代码实现:
#include <stdio.h>
int main()
{
int m, n, r, gcd, lcm;
printf("请输入两个正整数m和n:");
scanf("%d%d", &m, &n);
// 求最大公约数
while (n != 0)
{
r = m % n;
m = n;
n = r;
}
gcd = m;
// 求最小公倍数
lcm = m * n / gcd;
printf("最大公约数为:%d\n", gcd);
printf("最小公倍数为:%d\n", lcm);
return 0;
}
写一段Java程序题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
以下是Java程序的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int m = input.nextInt();
int n = input.nextInt();
int gcd = getGCD(m, n);
int lcm = getLCM(m, n, gcd);
System.out.println("最大公约数:" + gcd);
System.out.println("最小公倍数:" + lcm);
}
// 求最大公约数
public static int getGCD(int m, int n) {
int r;
while (n != 0) {
r = m % n;
m = n;
n = r;
}
return m;
}
// 求最小公倍数
public static int getLCM(int m, int n, int gcd) {
return m * n / gcd;
}
}
希望能够帮到你!
阅读全文