python中的长整数除法错误,同时找到最小公倍数

时间:2016-07-19 15:07:19

标签: python python-3.x lcm

通常,程序不会为小错误引发错误但是当涉及到这些数字时,它会返回错误的除法结果

def leastCommonMultiple(n1, n2):
    a=n1
    b=n2
    while n2!=0:
        (n1, n2) = (n2, n1 % n2)
   print (n1) # greatest common divisior for given input is 5
   print(a*b) # for given numbers 231871064940156750
   return int((a*b)/n1) #wrong result    46374212988031352



numStr=input()
nums=numStr.split()
num1=int(nums[0])
num2=int(nums[1])
lcm=leastCommonMultiple(num1, num2)
print (lcm)


Input:
226553150 1023473145

Your output:
46374212988031352

Correct output:
46374212988031350

我的解释是什么:

leastCommonMultiple = (Num1*Num2)/greatestCommonDivisor

所以在while循环中我通过使用euclidean方法找到了greatestCommonDivisor

我使用公式(LCM = n1*n2/ GCD )

我希望我能清楚地解释这个问题。我可以帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

在python 3中使用//进行整数除法。我刚发现了这个