嘘~ 正在从服务器偷取页面 . . .

同余的基本性质


同余的基本性质

一、定义

设整数 \(m \ne 0\) 。若 \(m \mid (a - b)\) ,则称 \(m\)模数),

\(a\) 同余于 \(b\)\(m\)\(b\)\(a\) 对模 \(m\)剩余,记作 \(a \equiv b \pmod{m}\)

否则 \(a\) 不同余 \(b\)\(m\)\(b\) 不是 \(a\) 对模 \(m\) 的剩余,记作 \(a \not\equiv b \pmod{m}\)

这样的等式称为模 \(m\) 的同余式,简称同余式


根据整除的性质,上述同余式也等价于 \(a \equiv b \pmod{(-m)}\)

故未特别注明的情况,默认模数为正整数。


二、性质

  • 同余是等价关系,即同余具有

    • 自反性:\(a\equiv a\pmod m\)
    • 对称性:若 \(a\equiv b\pmod m\),则 \(b\equiv a\pmod m\)
    • 传递性:若 \(a\equiv b\pmod m,b\equiv c\pmod m\),则 \(a\equiv c\pmod m\)
  • 线性运算:若 \(a,b,c,d\in\mathbb{Z},m\in\mathbb{N}^*,a\equiv b\pmod m,c\equiv d\pmod m\) 则有:

    • \(a\pm c\equiv b\pm d\pmod m\)
    • \(a\times c\equiv b\times d\pmod m\)
  • \(f(x)=\sum_{i=0}^n a_ix^i\)\(g(x)=\sum_{i=0}^n b_ix^i\) 是两个整系数多项式,\(m\in\mathbb{N}^*\)

    则对任意整数 \(x\) 均有 \(f(x)\equiv g(x)\pmod m\)

    进而若 \(a_i\equiv b_i\pmod m,~0\leq i\leq n\),那么若 \(s\equiv t\pmod m\),则 \(f(s)\equiv g(t)\pmod m\)

  • \(a,b\in\mathbb{Z},\,k,m\in\mathbb{N}^*,a\equiv b\pmod m\) ,则 \(ak\equiv bk\pmod{mk}\)

  • \(a,b\in\mathbb{Z},\,d,m\in\mathbb{N}^*,d\mid a,d\mid b,d\mid m\),则当 \(a\equiv b\pmod m\) 成立时,有 \(\dfrac{a}{d}\equiv\dfrac{b}{d}\left(\bmod\;{\dfrac{m}{d}}\right)\)

  • \(a,b\in\mathbb{Z},\,d,m\in\mathbb{N}^*,d\mid m\),则当 \(a\equiv b\pmod m\) 成立时,有 \(a\equiv b\pmod d\)

  • \(a,b\in\mathbb{Z},\,d,m\in\mathbb{N}^*\),则当 \(a\equiv b\pmod m\) 成立时,有 \((a,m)=(b,m)\)

    \(d\) 能整除 \(m\)\(a,b\) 中的一个,则 \(d\) 必定能整除 \(a,b\) 中的另一个。

还有性质是乘法逆元。本文不涉及该部分。


三、C/C++ 的整数除法和取模运算

在 C/C++ 中,整数除法和取模运算,与数学上习惯的取模和除法不一致。

对于所有标准版本的 C/C++,规定在整数除法中:

  1. 当除数为 \(0\) 时,行为未定义;
  2. 否则 (a / b) * b + a % b 的运算结果与 a 相等。

也就是说,取模运算的符号取决于除法如何取整;而除法如何取整,这是实现定义的(由编译器决定)。

从 C99 和 C++11 标准版本起,规定 商向零取整(舍弃小数部分);

取模的符号即与被除数相同。从此以下运算结果保证为真:

5 % 3 == 2;
5 % -3 == 2;
-5 % 3 == -2;
-5 % -3 == -2;

参考文献

[1] https://oi-wiki.org/math/number-theory/basic/


文章作者: q779
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明来源 q779 !
评论
  目录