pythonで多倍長を用いて99の95乗を計算したいと思っております。
そこで繰り返し二乗で計算する次のコードを書きました。
結果は
2762516676992086031162215252099373937751823498820663686038954381955181420661434999029402997104757596041430934979321430477936990632890966956832566192554952764119325614305369446826420895442039482384803123768496541126881538692265003099627365446602458705267201
となりまたが、wolfram alphaで計算した値3848960788934848611927795802824596789608451156087366034658627953530148126008534258032267383768627487094610968554286692697374726725853195657679460590239636893953692985541958490801973870359499
と一致しません。問題点・改善方法の分かる方いらっしゃったらお願いいたします。
python
1 2def pow(a,n): 3 ret = 1 4 a=int(a) 5 n=int(n) 6 while n > 0: 7 if n % 2 == 1: 8 ret = ret * a 9 n = int(n / 2) 10 a = a * a 11 print(a) 12 return ret 13 14def run(): 15 print(pow(99,95)) 16 17run() 18
回答1件
あなたの回答
tips
プレビュー