求两数最大公约数和最小公倍数
时间: 2024-10-10 13:00:49 浏览: 34
要求两个整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM),你可以使用欧几里得算法(Euclidean algorithm)来计算它们。
**最大公约数 (GCD)**:
- 欧几里得算法基于这样一个原理:两个整数a和b(假设a > b),它们的最大公约数等于b和a除以b的余数c的最大公约数。这个过程不断重复,直到余数为0,此时的b就是最大公约数。
```python
def gcd(a, b):
while b != 0:
a, b = b, a % b
return a
# 示例
print(gcd(48, 18)) # 输出结果应为6
```
**最小公倍数 (LCM)**:
- 最小公倍数可以通过最大公约数来计算,公式是:`lcm(a, b) = |a * b| / gcd(a, b)`。因为如果a和b有公共因子d,则他们的乘积也是d的倍数,所以取绝对值避免出现负数。
```python
def lcm(a, b):
return abs(a * b) // gcd(a, b)
# 示例
print(lcm(48, 18)) # 输出结果应为72
```
相关问题
java求两数最大公约数和最小公倍数
最大公约数和最小公倍数是数学中的基础概念,在Java中可以通过以下代码进行计算:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num1 = input.nextInt();
int num2 = input.nextInt();
int gcd = getGCD(num1, num2);
int lcm = getLCM(num1, num2, gcd);
System.out.println("最大公约数为:" + gcd);
System.out.println("最小公倍数为:" + lcm);
}
// 求两数最大公约数
public static int getGCD(int a, int b) {
if (a % b == 0) {
return b;
} else {
return getGCD(b, a % b);
}
}
// 求两数最小公倍数
public static int getLCM(int a, int b, int gcd) {
return a * b / gcd;
}
}
```
输入两个数字后,程序会输出它们的最大公约数和最小公倍数。
笑话:为什么马路会斜呢?因为一条腿长一条腿短。
求两数的最大公约数和最小公倍数 输入两个正整数m和n,求其最大公约数和最小公倍数 输入说明: 两个正整数 输出说明: 最大公约数最小公倍数
以下是求两数的最大公约数和最小公倍数的Python代码:
```python
def gcd(a, b):
"""
求a和b的最大公约数
"""
if b == 0:
return a
else:
return gcd(b, a % b)
def lcm(a, b):
"""
求a和b的最小公倍数
"""
return a * b // gcd(a, b)
m, n = map(int, input().split())
print("最大公约数为:", gcd(m, n))
print("最小公倍数为:", lcm(m, n))
```
阅读全文