模运算
如果N整除 A - B,那么我们就说A与B模N同余(congruent),记为A≡B(modN)A \equiv B\pmod{N}A≡B(modN)直观地看,这意味着无论A还是B被N去除,所得余数都是相同的。于是,81≡61≡1(modN)81 \equiv 61 \equiv 1\pmod{N}81≡61≡1(modN)。如同等号的情形一样,若A≡B(modN)A \equiv B\pmod{N}A≡B(modN),则A+C≡B+C(modN)A+C \equiv B+C \pmod{N}A+C≡B+C(modN)以及AD≡BD(modN)AD \equiv BD \pmod{N}AD≡BD(modN)
有许多的定理适用模运算,其中有一些特别要用到数论来证明。我们将谨慎地使用模运算。
奇偶数判断
1.最高效的办法,位运算法
int
isUnEven(long int X)
{
return X&1;
}
int
isEven(long int X)
{
return ~(X&1);
}
/* 参数化的宏法 */
#defien isUnEven(X) ((X)&(1))
#defien isEven(X) (~((X)&(1)))
2. 取模法
int
isUnEven(long int X)
{
return X%2;
}
int
isEven(long int X)
{
return !(X%2);
}
/* 参数化的宏法 */
#defien isUnEven(X) ((X)%(2))
#defien isEven(X) (!((X)%(2)))