irb에서 3 ** 557을 계산하려고 할 때이 문제가 발생했습니다. Ruby와 MacRuby 모두 내 Mac (OS X 10.8)에 설치되어 있습니다. 그리고 루비의 버전은 MacRuby 0.12 (루비 1.9.2)의 1.8.7입니다. 갈비뼈와 macirb는 3 ** 557의 계산에서 두 가지 다른 답변을주었습니다.Ruby의 지수화 1.8.7 잘못된 대답을 반환합니다
$ irb
>> 3**557
=> 54755702179342762063551440788945541007926808765326951193810107165429610423703291760740244724326099993131913104272587572918520442872536889724676586931200965615875242243330408150984753872526006744122187638040962508934109837755428764447134683114539218909666971979603
$ macirb
irb(main):001:0> 3**557
=> 57087217942658063217290581978966727348872586279944803346410228520919738045995056049600505293676159316424182057188730248707922985741467061108015301244570536546607487919981026877250949414156613856336341922395385463291076789878575326
(macirb의가. 권리) 그리고 뭔가 더 큰, 예를 들어, 시도 3 ** 5337, 나는 이번에도 같은 대답을했다.
그래서이 문제는 Ruby 1.8.7에서 발생합니까? 아니면 다른 방법으로 지수를 계산해야합니까?
관련없는 특히,하지만 당신은 [모듈러 지수 (보고 할 수 있습니다 http://en.wikipedia.org/wiki/Modular_exponentiation)를 사용합니다. – jli
1.9.3 이전의 MRI가 설치되어 있지는 않지만 올바른 결과를 제공합니다. –
어떤 Mac의 정확한 모델을 사용하고 있습니까? MacPro (Xeon)에서 동일한 버전의 Ruby (1.8.7 p358)를 사용하여 이것을 재현 할 수 없습니다. 32 비트로 실행되는 오래된 1.8.6에서도 사용할 수 없습니다. –