我试图在JavaScript中实现一个简单的算法.无论我在哪里,都需要代码才能解决问题1 (mod N).据我所知,1模数任何(或1%N)是1.
我错过了什么?它总是1,如果是这样,为什么不只使用1?
Ble*_*der 10
算法可能会说:
x ? 1 (mod N) # x is congruent to 1 (modulo N)
Run Code Online (Sandbox Code Playgroud)
在(mod N)和三重等号分别表示你与模运算,不正常的运算作业.把它想象成一个时钟的手.在模运算,x ? 1是指x与1属于同一剩余类.如果你有一个带有N小时分度的时钟,转动手的1时间x会将手移到相同的终点位置.
对于您的特定情况,如果从不为负,x ? 1 (mod N)可以用x % N === 1JavaScript 表示.否则,你的相等性将不会成立,即使它应该:例如,但是,即使它们在模运算意义上"相等" ,它也不相等.x-1 ? 1 (mod 2)(-1) % 2 === -11
如果你期望x是负数,你可以重新排列同余关系:
x ? 1 (mod N)
? x - 1 ? 0 (mod N)
Run Code Online (Sandbox Code Playgroud)
x - 1一致0意味着它N本身可以被整除,所以你可以安全地使用模运算符:
if ((x - 1) % N === 0) {
...
}
Run Code Online (Sandbox Code Playgroud)