这是我的代码到目前为止。LCM和GCD 3编号 - Python
from math import gcd
#3 digit lcm calculation
h=input("(1) 2 Digit LCM Or \n(2) 3 Digit LCM\n :")
if h == "2":
while True:
def lcm(x, y, z):
a = gcd(x, y, z)
num = x
num2 = y * z // a
LCM = num * num2 // a
return LCM
x = int(input("Number 1: "))
y = int(input("Number 2: "))
z = int(input("Number 3: "))
print("The LCM Of " + str(x) + " And " + str(y) + " And " + str(z) + " Is " + str(lcm(x, y, z)))
if h == "1":
while True:
def lcm(x, y):
a = gcd(x, y)
num = x
num2 = y
LCM = num * num2 // a
return LCM
x = int(input("Number 1: "))
y = int(input("Number 2: "))
print("The LCM Of " + str(x) + " And " + str(y) + " Is " + str(lcm(x, y)))
我的问题是,3位刚刚发现一种常见多发不是最低的这样的10,5,8,使400的替代可能的40 任何帮助将是有益的!
新代码感谢修剪等
from math import gcd
#3 digit lcm calculation
h=input("(1) 2 Digit LCM Or \n(2) 3 Digit LCM\n :")
if h == "2":
while True:
def lcm(x, y, z):
gcd2 = gcd(y, z)
gcd3 = gcd(x, gcd2)
lcm2 = y*z // gcd2
lcm3 = x*lcm2 // gcd(x, lcm2)
return lcm3
x = int(input("Number 1: "))
y = int(input("Number 2: "))
z = int(input("Number 3: "))
print("The LCM Of " + str(x) + " And " + str(y) + " And " + str(z) + " Is " + str(lcm(x, y, z)))
一件事,就是有另一种方式来标记,而不必每行前加4位代码。由于
这不是你的实际代码,或者你没有提到你的错误。 'math.gcd'只有两个参数,所以'a = gcd(x,y,z)'会死于'TypeError'。无论如何,你都过于复杂。只需编写一个双数LCM函数,并且[你可以用它来实现一个'n'数LCM函数](http://stackoverflow.com/q/147515/364696)。 – ShadowRanger
......并且*会因该错误而死亡。 – Prune