0

通常、プログラムは小さい場合はエラーをスローしませんが、これらの数値になると間違った除算結果を返します

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そのため、ユークリッド法を使用して見つけたwhileループで

そして、私は式を使用しました(LCM = n1*n2/ GCD )

問題を明確に説明したことを願っています。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

3

整数除算にはPython 3で // を使用します。私はちょうどこれを知った

于 2016-07-19T15:23:31.783 に答える