這是我的代碼到目前爲止。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