while True: try: m,n=map(int,input().split()) if m>n: b=m else: b=n a,c=m,n bei=0 yue=1 for i in range(2,min(m,n)+1): if m%i==0 and n%i==0: yue*=i m/=i n/=i while b>0: if b%a==0 and b%c==0: bei = b break b+=1 print("{} {}".format(yue,bei)) except: break这段代码只考虑正整数的话哪里有问题
时间: 2023-12-12 20:03:20 浏览: 132
Simple-Calculator:使用Python 3的简单计算器
在输入非整数时会引发异常,需要对输入进行异常处理。此外,如果输入的数为 0 或负数,也需要进行特殊处理。另外,当两个数中有一个为 1 时,最大公倍数应该为另一个数。修改后的代码如下:
```
while True:
try:
m, n = map(int, input().split())
if m <= 0 or n <= 0:
raise ValueError("输入必须为正整数!")
if m == 1 or n == 1:
yue = m if n == 1 else n
bei = m * n
else:
if m > n:
b = m
else:
b = n
a, c = m, n
yue = 1
for i in range(2, min(m, n) + 1):
if m % i == 0 and n % i == 0:
yue *= i
m //= i
n //= i
while b > 0:
if b % a == 0 and b % c == 0:
bei = b
break
b += 1
print("{} {}".format(yue, bei))
except:
break
```
阅读全文