Ошибка деления длинных целых чисел в Python при поиске наименьшего общего кратного
Обычно, программа не выдает ошибку для малого, но когда дело доходит до этих чисел, она возвращает неправильный результат деления
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
Так что в то время как цикл я нашел greatestCommonDivisor
с помощью евклидова метода
и я использовал формулу (LCM = n1*n2/ GCD )
Я надеюсь, что я объяснил проблему ясно. Что я могу решить эту проблему, вы можете мне помочь, пожалуйста?
1 ответ
Использовать // в Python 3 для целочисленного деления. Я только что узнал это