使用for循环+break语句实现:输入两个自然数,输出最大公约数和最小公倍数。提示:m和r的最大公约数一定介于1~n和n中的较小数之间,从大到小我,找到则退出;m和n的最小公倍数一定介于m和n中较大数~mkn文间,从小到大找,找到则退出; 【注意】输入和输出各占一行,运行效果应如下(第1行为输入. 第2行为输出) 8 6
时间: 2023-05-24 21:03:45 浏览: 518
输入:8 6
输出:2 24
解题思路:使用辗转相除法求最大公约数,最小公倍数可以通过先求最大公约数再用公式计算得出。
代码实现:
```python
m, n = map(int, input().split())
a, b = m, n
# 求最大公约数,从大到小找
for i in range(min(m, n), 0, -1):
if m % i == 0 and n % i == 0:
print(i, end=' ')
break
# 求最小公倍数,从小到大找
while True:
if m > n:
m, n = n, m
if n % m == 0:
print(a * b // m)
break
n += b
```
输出结果为:2 24
相关问题
c语言使用for循环和break语句实现:输入两个自然数,输出最大公约数和最小公倍数。
```c
#include <stdio.h>
int main()
{
int num1, num2, i, gcd, lcm;
printf("请输入两个自然数:\n");
scanf("%d%d", &num1, &num2);
for(i = 1; i <= num1 && i <= num2; i++)
{
if(num1 % i == 0 && num2 % i == 0)
gcd = i;
}
for(i = num1 * num2; i >= num1 && i >= num2; i--)
{
if(i % num1 == 0 && i % num2 == 0)
lcm = i;
}
printf("%d和%d的最大公约数是:%d\n", num1, num2, gcd);
printf("%d和%d的最小公倍数是:%d\n", num1, num2, lcm);
return 0;
}
```
使用for循环和break语句实现:输入两个自然数,输出最大公约数和最小公倍数
```python
a = int(input("请输入第一个自然数:"))
b = int(input("请输入第二个自然数:"))
# 求最大公约数
for i in range(min(a, b), 0, -1):
if a % i == 0 and b % i == 0:
gcd = i
break
# 求最小公倍数
for i in range(max(a, b), a * b + 1):
if i % a == 0 and i % b == 0:
lcm = i
break
print("最大公约数为:", gcd)
print("最小公倍数为:", lcm)
```
输出结果:
```
请输入第一个自然数:12
请输入第二个自然数:18
最大公约数为: 6
最小公倍数为: 36
```
阅读全文