1(mod N)是什么意思?

JJJ*_*jim 5 javascript modulo

我试图在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)

  • 澄清一下:`x ≡ 1 (mod N)` 是*真的* `x % N == 1 % N`,简化为`x % N == 1`,因为`1 % N == 1`(假设` N` 不是 1)。 (2认同)