目录同余定理负数模正数的结果和修正只有加法和乘法时存在除法时同余定理如果 a - b 可以被 p 整除那么 a % p b % p。反之亦成立。负数模正数的结果和修正在 C 或 java 中一个负数模上一个正数的结果是负数正数模上正数的结果是正数。现在修正为不管是正数还是负数模上正数的结果都是正数。即当计算时存在减法时结果可能是负数如果需要补正就需要“模加模”的技巧a - b%p p% p 即 a - b%p p% p 等于 a - b%p 的绝对值。只有加法和乘法时计算的过程如果只有加法和乘法并且要对最终结果取模那么中间过程可以随便取模位置、次数随意可以处处取模。在编程中的意义是可以防止中间结果溢出。#include stdio.h int main() { printf(%d\n, (1 2 3 * 4 5 6 7 8 * 9 10 11 * 12 13 15) % 5); // 输出 0 // 在任意位置取模 printf(%d\n, (1 2%5 3 * 4 5 6%5 7 8 * 9 10%5 11 * 12 13 15) % 5); // 输出 0 return 0; }存在除法时计算的过程如果存在除法并且要对最终结果取模那么中间过程如果随便取模会造成结果错误。解决方法是求逆元。