输入两个整数求最大公约数最小公倍数
时间: 2024-05-09 11:21:27 浏览: 72
以下是Python代码实现:
```python
def gcd(x, y):
"""
求最大公约数
"""
if y == 0:
return x
else:
return gcd(y, x % y)
def lcm(x, y):
"""
求最小公倍数
"""
return x * y // gcd(x, y)
a = int(input("请输入第一个整数:"))
b = int(input("请输入第二个整数:"))
print("最大公约数为:", gcd(a, b))
print("最小公倍数为:", lcm(a, b))
```
输出示例:
```
请输入第一个整数:24
请输入第二个整数:36
最大公约数为: 12
最小公倍数为: 72
```
相关问题
C语言输入两个整数求最大公约数和最小公倍数
下面是两种方法实现C语言输入两个整数求最大公约数和最小公倍数:
1. 代码实现(代码中利用辗转相除法求最大公约数):
```c
#include <stdio.h>
//辗转相除法求最大公约数
int gcd(int x, int y) {
int c = 1;
while (c > 0) {
c = x % y;
x = y;
y = c;
}
return x;
}
int main() {
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
int n = gcd(a, b);//n为a和b的最大公约数
printf("%d\n", n);
//求a和b的最小公倍数
int min = a * b / n;//min即为a和b的最小公倍数
printf("%d\n", min);
return 0;
}
```
2. 利用穷举法求最大公约数和最小公倍数:
```c
#include <stdio.h>
int main() {
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
int max = a > b ? a : b;//找到两数中的最大值
int min = a < b ? a : b;//找到两数中的最小值
int i = 0;
for (i = min; i > 0; i--) {
if (max % i == 0 && min % i == 0) {
printf("%d\n", i);//i即为a和b的最大公约数
break;
}
}
printf("%d\n", a * b / i);//a和b的最小公倍数
return 0;
}
```
输入两个正整数求最大公约数最小公倍数
最大公约数可以使用辗转相除法或欧几里得算法求解,最小公倍数可以通过最大公约数求解。
辗转相除法:
设两个正整数为a和b,且a>b,用a除以b,得到余数r,若r为,则b即为最大公约数;若r不为,则用b除以r,得到余数r1,若r1为,则r即为最大公约数;若r1不为,则继续用r除以r1,直到余数为为止。
最大公约数:两个正整数a和b的最大公约数为gcd(a,b)。
最小公倍数:两个正整数a和b的最小公倍数为lcm(a,b) = a*b/gcd(a,b)。
例如,输入两个正整数10和15,先求最大公约数,使用辗转相除法,得到:
10÷15=...10
15÷10=1...5
10÷5=2...
因此,gcd(10,15)=5。
再求最小公倍数,使用公式lcm(10,15) = 10*15/5 = 30。
因此,10和15的最大公约数为5,最小公倍数为30。
阅读全文