输入两个整数,求其最大公约数和最小公倍数
时间: 2023-06-05 07:47:50 浏览: 99
最大公约数可以使用辗转相除法或欧几里得算法求解,最小公倍数可以通过两数之积除以最大公约数得到。
例如,输入整数a和b,求它们的最大公约数和最小公倍数:
1. 求最大公约数:
(1)辗转相除法:
a, b = b, a % b
重复上述步骤直到a % b为,此时b即为最大公约数。
(2)欧几里得算法:
def gcd(a, b):
if b == :
return a
else:
return gcd(b, a % b)
最大公约数为gcd(a, b)。
2. 求最小公倍数:
lcm = a * b / gcd(a, b)
最小公倍数为lcm。
相关问题
输入两个整数求其最大公约数和最小公倍数
以下是Python实现输入两个整数求其最大公约数和最小公倍数的代码:
```python
# 定义函数,求最大公约数
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
# 定义函数,求最小公倍数
def lcm(a, b):
return a * b // gcd(a, b)
# 输入两个整数
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
# 输出最大公约数和最小公倍数
print("{0}和{1}的最大公约数为:{2}".format(num1, num2, gcd(num1, num2)))
print("{0}和{1}的最小公倍数为:{2}".format(num1, num2, lcm(num1, num2)))
```
运行结果:
```
请输入第一个整数:24
请输入第二个整数:36
24和36的最大公约数为:12
24和36的最小公倍数为:72
```
c语言中输入两个整数求其最大公约数和最小公倍数
以下是C语言中输入两个整数求其最大公约数和最小公倍数的代码和解释:
```c
#include <stdio.h>
int main() {
int m, n, t, i, k;
printf("请输入两个正整数:\n");
while(1) {
scanf("%d %d",&m,&n);
if(m*n>0) {
break;
}
printf("输入有误请再次输入:\n");
}
if(m<n) {
t=m;
m=n;
n=t;
}
for(i=n;i>0;i--) {
if(m%i==0 && n%i==0) {
break;
}
}
for(k=m; ;k++) {
if(k%m==0 && k%n==0) {
break;
}
}
printf("最大公约数为%d\n",i);
printf("最小公倍数为:%d\n",k);
return 0;
}
```
解释:
1. 首先,通过`scanf`函数输入两个正整数m和n。
2. 判断m和n是否都为正整数,如果不是则要求重新输入。
3. 如果m小于n,则交换m和n的值。
4. 从n开始向下遍历,找到第一个既能整除m又能整除n的数,即为最大公约数。
5. 从m开始向上遍历,找到第一个既能被m整除又能被n整除的数,即为最小公倍数。
6. 输出最大公约数和最小公倍数。
阅读全文