0.威尔逊定理、判断一个数是不是素数得充分必要条件:
p为素数,必有: (p-1)! ≡ -1 mod p
即:(p-1) !+ 1 ≡ 0 mod p引证: 令 p=7 则有(7-1)!= 6! = 1 * 2 * 3 * 5 * 6
重排乘积中的因子并把乘积是模7的逆的分成一组 即:2*4 ≡ 1 mod 7 、3*5 ≡ 1 mod 7
得: 6!≡(2*4)*(3*5)*6
≡ 6 mod 7
≡-1 mod 7
看看引证就行,实证太玄学(初等数论及应用中可以找到)
实现的时间复杂度为 n(log2 n)^2
1. 费马小定理推出的一个[线性同余方程]的推论:
费马小定理:ax ≡ 1 mod p
因为a^(p-2)是 a mod p 的逆 [a^(p-1)≡ 1 mod p],也就是说解: x=a^(p-2)
现在有: ax ≡ b mod p
把同余方程左右两边 *a^(p-2) 得出: a^(p-2)*ax ≡ b*a^(p-2) mod p
则得出推论:x ≡ a^(p-2)*b mod p,
欧拉定理:模板
假若与
互质,那么
可被
整除。亦即,
其中
即为欧拉总计函数。如果
为 质数,那么
![]()
欧拉函数的值:(小于等于1的正整数中唯一和1互质的数就是1本身)
若n是质数p的k次幂,,因为除了p的倍数外,其他数都跟n互质。
若
。如
欧拉函数是积性函数,即是说若m , n互质,
2.同余式的消去律:
有一个c 使得 gcd(c,p)=1 则 ac ≡ bc mod p => a ≡ b mod p (在a != b 的时候成立)
证: ac = pk + bc => c (a-b) = kp => (a-b)= kp /c 则c 整除 k (c|k) => k=k`c
c (a - b) = k`cp => (a -b) =k`p => a ≡ b mod p
附变形: 若a^2≡1(mod p),则a≡±1(mod p) 也就是说:(a+1)%p==0或(a-1)%p==0
3.卢卡斯定理:
![]()
A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。
则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0]) modp同余
即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p) 因为要用到相除、取模、所以p要求是素数
4.所有的偶数(2除外)都可以用两个素数的和来表示
5. 求两个分数的最大公约数 b/a,d/c
首先把b/a,和d/c分别化简为最简公约数(b、a,d、c.分别除以(a,b)和(d,c)就好啦)
假设b/a,d/c已经是最简的 那么有 (b/a,d/c)=(b,d)/lcm(a,c)
求两个分数的最小公倍数(假设同上)
lcm(b/a,d/c)=lcm(a,c)/(b,d)
6. (a,b)=c,若 i = a/c,j = b/c,则(i+j)与(i*j)互质。 a和b两个数,使得x+y=a,lcm(x,y)=b, 那么有gcd(a,b)=gcd(x,y);