金华集训Day7——宇

7 篇文章 0 订阅
7 篇文章 0 订阅


Contents)

一、质因子分解

1.素性测试

①两种常见的素性测试

\qquad 试除法,配合质数筛法可以做到 O ( n ) O(\sqrt n) O(n )的复杂度。
\qquad M i l l e r − R a b i n Miller-Rabin MillerRabin素性测试,可以做到 O ( l o g   n ) O(log\ n) O(log n)的复杂度,属于 R P RP RP算法。
\qquad 其它还有印度人的 A K S AKS AKS算法可以做到正确率 100 % 100\% 100% O ( l o g   n ) O(log\ n) O(log n)复杂度。
\qquad 绝大多数情况 M i l l e r − R a b i n Miller-Rabin MillerRabin都够优秀了。
\qquad 可以查阅 w i k i wiki wiki以确定 M i l l e r − R a b i n Miller-Rabin MillerRabin应该试到多少。

②Miller-Rabin

\qquad 基本原理是飞马小定理:若 p p p是质数, a , p a,p a,p互质,则 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1\pmod p ap11(modp)
\qquad 于是对于某个 p p p,若能找到与它互质的 a a a使得 a p − 1 ≠ 1 ( m o d p ) a^{p-1}\ne 1\pmod p ap1̸=1(modp),则 p p p必定不是质数。
\qquad 然而有些合数 p p p,满足所有它互质的 a a a都有 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv 1\pmod p ap11(modp),这种数称为 C a r n i c h a e l Carnichael Carnichael数(如 561 = 3 ∗ 11 ∗ 17 561=3*11*17 561=31117),这样的数是用上面的方法检验不出来的。
\qquad 所以还需要奇素数判定。对于奇素数 p p p,如果 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1\pmod p ap11(modp) ( a p − 1 2 + 1 ) ( a p − 1 2 − 1 ) ≡ 0 ( m o d p ) (a^\frac{p-1}2+1)(a^\frac{p-1}2-1)\equiv0\pmod p (a2p1+1)(a2p11)0(modp),由于 F p F_p Fp是整环,所以 a p − 1 2 ≡ 1 a^\frac{p-1}2\equiv1 a2p11 p − 1 p-1 p1。如果 p − 1 2 \frac{p-1}2 2p1还是偶数则可以继续往下检验……
\qquad 用原根的一些理伦可以证明这样就能保证对于任意合数至少存在一个 a a a可以判定它是合数。

2.质因子分解

①两种常见的质因子分解方法

\qquad 试除法,复杂度 O ( n ) O(\sqrt n) O(n ),太慢了。
\qquad P o l l a r d ′ s R h o Pollard's Rho PollardsRho,期望复杂度 O ( n 4   l o g   n ) O(\sqrt[4] n \ log\ n) O(4n  log n),有名启发式分解。

②为什么叫启发式分解?

\qquad n n n是素数的时候用 M i l l e r − R a b i n Miller-Rabin MillerRabin素性测试。
\qquad n n n不是素数的时候,复杂度只和最小的质因子有关。所以称为启发式。

③Pollard’s Rho

\qquad 假如要分解一个数 n n n
\qquad 首先进行素性测试,是素数直接返回。
\qquad 否则就要生成一些随机的 x i x_i xi,去求 g c d ( ∣ x i − x j ∣ , n ) gcd(|x_i-x_j|,n) gcd(xixj,n),如果这个 ∈ ( 1 , n ) \in(1,n) (1,n)则找到了 n n n的一个因子,递归分解。
\qquad 一个挺靠谱的随机方法就是 x ← x 2 + c x←x^2+c xx2+c c c c是个随机数。
\qquad 这样随机出来的 x x x可能会进入循环,假如进入循环了我们还没找到因子,就重新随个 x x x c c c,重新做。

④如何判已经进入循环?

\qquad 可以证明 x ← x 2 + c x←x^2+c xx2+c,形成的一定是一个 p p p形结构。
\qquad 每次当 i 为 2 的幂次的时候就令 y ← x i y←x_i yxi,如果某时刻 x i = y x_i=y xi=y了则说明已经在环上绕了一圈了。
\qquad 即:看 x ( 2 , 4 ] x_{(2,4]} x(2,4]是否 = x 2 =x_2 =x2,看 x ( 4 , 8 ] x_{(4,8]} x(4,8]是否 = x 4 =x4 =x4,看 x ( 8 , 16 ] x_{(8,16]} x(8,16]是否 = x 8 … … =x_8…… =x8
\qquad 这样“浪费”的步数仅仅是 O ( 环 长 ) O(环长) O()级别的。

二、数论

1.欧几里得算法

①欧几里得求gcd

\qquad x ∣ a , x ∣ b x|a,x|b xa,xb,则 x ∣ a + b x|a+b xa+b
\qquad 于是 g c d ( a , b ) = g c d ( b , a % b ) gcd(a,b)=gcd(b,a\%b) gcd(a,b)=gcd(b,a%b)

②扩展欧几里德算法

\qquad 已知 a , b a,b a,b,求出 x , y x,y x,y满足 a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)
\qquad 在欧几里德算法中递归地求:若已有 b = 0 b=0 b=0,则 g c d = a gcd=a gcd=a,令 x = 1 , y = 0 x=1,y=0 x=1,y=0
\qquad 否则求出 x ′ , y ′ x′, y′ x,y满足 b x ′ + ( a − a / b ∗ b ) ∗ y ′ = g c d ( b , a % b ) = g c d ( a , b ) bx′+(a-a/b∗b)∗y′=gcd(b,a\%b)=gcd(a,b) bx+(aa/bb)y=gcd(b,a%b)=gcd(a,b)
\qquad 于是 a ∗ y ′ + b ∗ ( x ′ − a / b ∗ y ′ ) = g c d ( a , b ) a∗y′+b∗(x′-a/b∗y′)=gcd(a,b) ay+b(xa/by)=gcd(a,b)

③辗转相减(除)的其它用处

\qquad 只要一个环定义了带余除法,就可以在上面辗转相减(除)。比如模合数的环、多项式环等等。
\qquad 比如求行列式模一个合数,根据行列式的性质可以把一行的倍数加到另一行上。辗转相减把其中一个位置消成 0 0 0即可。
\qquad 比如求两个多项式的最大公约式,或者说多项式取模,可以不停地把一个的倍数加到另一个上,把其中一个多项式变成 0 0 0

④类欧几里德算法

\qquad 最基本的模型: s o l v e ( n , A , B , C ) = ∑ i = 1 n ⌊ A i + B C ⌋ solve(n,A,B,C)=\sum^n_{i=1}⌊\frac{A_i+B}C⌋ solve(n,A,B,C)=i=1nCAi+B
如果 A ≥ C A≥C AC a n s + = n ( n + 1 ) 2 ∗ ( A / C ) ans+=\frac{n(n+1)}2∗(A/C) ans+=2n(n+1)(A/C),然后 A % = C A\%=C A%=C
\qquad 如果 ∣ B ∣ ≥ C |B|≥C BC,讨论下正负号算下,然后把 B B B搞到 [ 0 , C ) [0, C) [0,C)之间。
\qquad m = ⌊ A n + B C ⌋ m=⌊\frac{A_n+B}C⌋ m=CAn+B,则要算 ∑ i = 1 n ∑ j = 1 m [ C j ≤ A i + B ] \sum^n_{i=1}\sum^m_{j=1}[C_j≤A_i+B] i=1nj=1m[CjAi+B]
\qquad n m − ∑ j = 1 m ∑ i = 1 n [ A i ≤ C j − B − 1 ] nm-\sum^m_{j=1}\sum^n_{i=1}[A_i≤C_j-B-1] nmj=1mi=1n[AiCjB1]
\qquad n m − s o l v e ( m , C , − B − 1 , A ) nm-solve(m,C,-B-1,A) nmsolve(m,C,B1,A)
\qquad 每次 A A A C C C取模后互换位置,复杂度同欧几里德算法,为 O ( l o g   C ) O(log\ C) O(log C)

2.中国剩余定理

①中国剩余定理

\qquad n n n个方程 x ≡ a i ( m o d p ) i x\equiv a_i\pmod p_i xai(modp)i p i p_i pi两两互质,求 x x x
\qquad w i = ∏ j ≠ i p j w_i=\prod_{j\ne i}p_j wi=j̸=ipj,则答案 ≡ ∑ i = 1 n a i × w i × i n v ( w i , p i ) \equiv\sum^n_{i=1}ai×w_i×inv(w_i, p_i) i=1nai×wi×inv(wi,pi)

②Ex 中国剩余定理

\qquad 如果模数不互质,只要两两合并方程即可。
\qquad 比如 x ≡ a 1 ( m o d p 1 ) , x ≡ a 2 ( m o d p 2 ) x\equiv a_1\pmod {p_1},x\equiv a_2\pmod {p_2} xa1(modp1),xa2(modp2),设 d = g c d ( p 1 , p 2 ) d=gcd(p_1, p_2) d=gcd(p1,p2),那么必须 a 1 ≡ a 2 ( m o d d ) a_1\equiv a_2 \pmod d a1a2(modd)。然后答案一定可以表示成 w × d + ( a 1   m o d   d ) w×d+(a_1\ mod\ d) w×d+(a1 mod d)
\qquad 用普通中国剩余定理求出 w w w即可。
w ≡ ( a 1 / d ) ( m o d p 1 / d ) , w ≡ ( a 2 / d ) ( m o d p 2 / d ) \qquad w\equiv(a_1/d)\pmod {p1/d},w\equiv(a_2/d)\pmod {p2/d} w(a1/d)(modp1/d),w(a2/d)(modp2/d)
\qquad 每次把两个方程合并成一个模数是它们 l c m lcm lcm的方程。

③费马小定理

\qquad p p p是质数,则 a p ≡ a ( m o d p ) a^p\equiv a\pmod p apa(modp)

⑤欧拉定理

\qquad p > 1 p>1 p>1 a , p a,p a,p互质,则 a ϕ ( p ) ≡ 1 ( m o d p ) a^{ϕ(p)}\equiv 1\pmod p aϕ(p)1(modp)
\qquad 证明: a , p a, p a,p互质,于是对于缩系内所有 x x x a x ax ax 同样构成缩系。即 ∏ g c d ( x , p ) = 1 a x ≡ ∏ g c d ( x , p ) = 1 x \prod_{gcd(x,p)=1}ax\equiv\prod_{gcd(x,p)=1}x gcd(x,p)=1axgcd(x,p)=1x。于是 a ϕ ( p ) ≡ 1 a^{ϕ(p)}\equiv 1 aϕ(p)1

⑥扩展欧拉定理

\qquad

离散对数问题

原根相关

二次剩余

一些例题

数论函数

定义

计算积性函数

一些例题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值