我在 python 中使用以下算法实现了一个 lcm 问题。我的代码如下:
# Uses python3
import sys
def gcd_efficient(a, b):
#current_gcd = 1
#for d in range(2, min(a, b) + 1):
# if a % d == 0 and b % d == 0:
# if d > current_gcd:
# current_gcd = d
#return current_gcd
remainder = max(a, b) % min(a, b)
newMax = min(a, b)
if remainder == 0:
return newMax
return gcd_efficient(newMax, remainder)
def lcm_efficient(a, b):
#for l in range(1, a*b + 1):
# if l % a == 0 and l % b == 0:
# return l
product = a*b
gcd = gcd_efficient(a, b)
lcm = product/gcd
return int(lcm)
print(lcm_efficient(226553150, 1023473145))
现在我已经使用上面的代码来计算作为输入的大整数的 lcm。
但是我发现对于一些大整数:例如,当输入是: 输入:226553150 1023473145 python 控制台的输出是:46374212988031352 但实际输出应该是:46374212988031350
实际输出与给定输出仅相差 2。但是,令我困惑的是,为什么 python 解释器在执行上述代码时会在输出中给出错误。
这个错误可以取消吗?
等待答案!!