模运算
如果N整除 A - B,那么我们就说A与B模N同余(congruent),记为
A
≡
B
(
m
o
d
N
)
A \equiv B\pmod{N}
A≡B(modN)直观地看,这意味着无论A还是B被N去除,所得余数都是相同的。于是,
81
≡
61
≡
1
(
m
o
d
N
)
81 \equiv 61 \equiv 1\pmod{N}
81≡61≡1(modN)。如同等号的情形一样,若
A
≡
B
(
m
o
d
N
)
A \equiv B\pmod{N}
A≡B(modN),则
A
+
C
≡
B
+
C
(
m
o
d
N
)
A+C \equiv B+C \pmod{N}
A+C≡B+C(modN)以及
A
D
≡
B
D
(
m
o
d
N
)
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)))