为什么JavaScript模数(%)运算符无法正常工作?

时间:2018-09-15 19:36:36

标签: javascript

我正在编写一个小程序,它将整数N作为输入,如果是3的幂,则返回true。否则,返回false。

尽管有很多方法可以编写这样的程序,但我对仅使**能够使以下解决方案有效的工作特别感兴趣。

  • 首先,我找到JavaScript支持的最大整数值,即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

  • 不是我应该使用的%模运算符吗?
  • 我在这里想念什么吗?

谢谢:)

0 个答案:

没有答案