我正在编写一个小程序,它将整数N作为输入,如果是3的幂,则返回true。否则,返回false。
尽管有很多方法可以编写这样的程序,但我对仅使**能够使以下解决方案有效的工作特别感兴趣。
Number.MAX_VALUE
Math.floor(Math.log(Number.MAX_VALUE) / Math.log(3))
进行3整除。这就是646
。 到目前为止,一切都很好。
现在,想法是,如果3^646 mod N == 0
,则N是3的幂,因为3是质数。
这在Wolfram Alpha(例如http://m.wolframalpha.com/input/?i=%283%5E646%29+mod+27)上工作得很好。
问题:
但是当我使用JavaScript执行相同操作时,我不会得到零,即Math.pow(3, 646) % 27
返回5
而不是0
。
%
模运算符吗?谢谢:)