正睿19暑期B班DAY7 数论

洛谷今日份:宜打chunithm(您虹了),sdvx(您暴了)

今日又是课件非常丰富份,本文仅作批注

首先要理解群,环,域的概念(这个会再提一次)

几个代数结构

群 是一个集合加上一个运算

满足封闭性结合律、有单位元、有逆元二元运算

环 定义了两种运算的非空集合,满足加法分配律和乘法结合律、分配律

幺环 有单位元的环

域 设F是一个有单位元e1(≠0)的交换环(满足乘法交换律的幺环)。如果F中每个非零元都可逆,称F是一个域。

也可以理解为能够做四则运算,对于四则运算得到的结果还在域内(封闭)的幺环

有助于理解并防止本文过长的链接

质因子分解

素性测试

  • 试除法
  • Miller-Rabin

板子等到血书要到了再补,没有就补一个自己的小菜板

质因子分解

  • 试除法,复杂度 O(\(\sqrt n\)),太慢了。
  • Pollard’s Rho,期望复杂度 O(\(^{4}\sqrt{n} log n\)),又名启发式分解。

数论

GCD & ExGCD

我相信你们已经完全会了

类欧几里得算法

解决类似于这样的问题

\[solve(n, A, B, C) = \sum_{i = 1}^{n} \lfloor \frac{Ai + B}{C}\rfloor \]

把它移项一下之后递归,具体见课件

关于课件里有几个名词问了一下数竞玩家:

hjmmm:环是什么?

念去去:环是一个定义了两种运算的群,满足加法分配律和乘法结合律、分配律。就是说在环这个范围内,+运算和×运算都是可以进行的。环具体是什么要具体问题具体分析。如果是mod5的,那么就是0-4。

hjmmm:明白辽。。emm那群是什么

念去去:就是进行某一种运算的范围。对于不同运算规则,群是可能不相同的。比如同余运算的群一般是整数

hjmmm:明白辽。。emm什么叫模合数的环?它和模质数的有什么区别?

念去去:膜质数简单,膜质数可以用更多的定理。Lucas定理 威尔逊定理之类的。对于有的概率运算 膜合数的结果和膜质数的不一样。这个我也不太清楚了。。。

hjmmm:好的 感谢vq

中国剩余定理 CRT&ExCRT

这里放一下r爷举的ExCRT的栗子

\(x = 3 (mod 12), x = 7 (mod 8)\)

\(x = 3 (mod 4)\)

\(x = 4k + 3 \ mod(lcm(12, 8))\)

\(k = 0 (mod 3), k = 1 (mod 2)\)

把k解出来之后 把两个方程合并成一个mod(lcm(p1, p2))的方程

费马小定理

p 是质数,则 \(a^p ≡ a (mod p)\)

欧拉定理

p > 1,a, p 互质,则 \(a^{ϕ(p)} ≡ 1 (mod p)\)

  • 缩系:和x互质的所有数的集合

扩展欧拉定理

$p > 1,n ≥ ϕ(p) 存在 a^n ≡ a^{n \ mod\ ϕ(p)+ϕ(p)} (mod p)

离散对数问题

BSGS

\(A^x ≡ B (mod C)\)

ExBSGS

A, B, C一起除以gcd(A, C)

原根相关

循环群:指群可以由一个元素生成:\(G = x, x^2, x^3 ...\)

阶:满足 \(x^d = 1\)的最小正整数 d。记为 ord(x)。

$x^m = 1 $当且仅当 \(ord(x)|m\)

模素数 p 的剩余类构成一个有限域。

m 意义下与 m 互质的元素组成缩系,大小为 ϕ(m)。

原根:能生成缩系的元素,即 \(x^i\) 两两不同\((0 ≤ i < ϕ(m))\)的 x。原根不一定存在。事实上,当且仅当 \(m = 2, 4, p^k,2∗p^k\) 时,模 m 缩系的原根存在。p 是任意奇质数。

Fact: 设 a 的阶是 m\(d|m\),则 \(a^d\) 的阶是 \(\frac{m}{d}\)

Fact: 设 a 的阶是 mb 的阶是 n,则必存在一个数,阶是 \(lcm(n, m)\)

Fact: n 个元素的循环群的生成元个数为 ϕ(n)。

好,相信看到这里你已经懵了

宛转表达:这个时候我们需要拉一个数竞党让他来证一遍

直接说明:咕咕咕

二次剩余

\((\frac{a}{p})\)表示 a 是模 p 域下的二次剩余,-1 表示是二次非剩余

p.s. LeTaX打法:(\frac{a}{p})

计算:\((\frac{a}{p}) = a^{\frac{p - 1}{2}} (mod \ p)\)

二次互反律:\((\frac{p}{q})(\frac{q}{p})=(-1)^{\frac{(p-1)(q - 1)}{4}}\)

二次剩余计算方法:原根法 / Cipolla算法

Cippolla:

rand一个a使得\(a^2 - n\)是二次非剩余

\(w = \sqrt{a^2 - n}\)\(x + yw\)形成一个域(\(x + yw\)是mod P域的扩域)

二次剩余解为\((a + w)^{\frac{p + 1}{2}}\)

关于证明,注:mod P下有性质 \((a + b)^P = a^P + b^P (mod P)\)

关于证明\((a + w)^{\frac{p + 1}{2}}\)不含\(w\)项,注:\((a^2 - w) = \frac{n}{y^2}\)

  • 跳跳棋

    link

    注意按照规则,一个状态只有三种转移(向里跳,中间棋子向左跳或向右跳)

    这样的话我们把第一种情况作为父亲,后两种作为儿子

    然后对于(a, b, c),如果有\(b - a > c - b\)

    那么(a, b, c)到父亲的距离就是\(\lfloor \frac{b - a}{c - b} \rfloor\)

  • Power Tower

    \(a_{l}^{a_{l + 1}^{...^{a_{r}}}}\)这个东西直接暴力就好啦

    只要下面变成1了就不用乘了

  • Chinese Leftover Ⅱ

\(a_1 + (a_2 - a_1) * p_1 * inv(p_1, p_2) (mod p_1p_2)\)

\(F(i , j) = F(i - 1, j) + (a_2 - a_1) * inv(p1, p2) mod \ p2 * p1\)

感觉别的题ppt写的很清楚啊

数论函数

从这里开始,一定要手推!一定要手推!一定要手推!

hjmmm:陪域是什么qvq

"数论函数:定义域为正整数集,陪域为复数域的函数。"

念去去:值域是陪域的一部分,值域是定义域映射到的陪域的那部分。

hjmmm:那陪域有什么用

念去去:人家没告诉你映射,比如说从整数集映到复数集,这个“复数集”就是陪域,相当于把我们高中习惯的叫法更严谨了。

hjmmm:所以陪域只要包含值域,是什么都行咯?

念去去:最起码。。。最起码作业帮是这个意思。所以陪域这个东西在这里就有点鸡肋了。。。

两个数论函数的迪利克雷卷积:(符号为*)

\[(f*g)(n)=\sum_{d|n}f(d)g(\frac{n}{d}) \]

满足:

交换律:f g = g f

结合律:(f g) h = f (g h)

分配律:f (g + h) = f g + f h

单位元:

f**, g 是积性函数则 f g 也是积性函数。

一些性质:

  • g = f 1,则 f = g µ

这个主要是用到\(\sum_{d | n} \mu(d) = \sum_{S \subset T} (-1)^{|S|} = \sum_{i = 0}^{n} \tbinom{n}{i}(-1)^i = (1-1)^n = 0\)

所以\(\sum_{d | n} \mu(d) = [n = 1]\)

同时\(\mu * 1 = \epsilon\)(为了方便各位,\(\epsilon\)的LaTeX是\epsilon)

\(\epsilon\)函数是单位元,有f ϵ = f

于是我们收获:

  • \(σ_k = Id_k ∗ 1,Id_k = σ_k ∗ µ\)

注:\(σ_k\)(n)表示n的约数的k次方之和,\(Id(n)\)表示n的k次方

  • \(Id_1 = ϕ ∗ 1,ϕ = Id_1 ∗ µ\)

注:\(Id_1\) = {1, 2, 3, ..., k}

莫比乌斯反演和杜教筛

真的打公式快。死。了。

以后再填坑qvq

Min25筛

如果有不理解的地方可以参考:

  • 对于ppt中的Part1 Part2 分别求解了质数范围和全部范围的积性函数前缀和

  • 那个\(T(n)\)是要求的积性函数

  • Part1中的F函数其实筛到最后,对于每一个j,只需要F(i, j)

    其中i为最小的i使得\(p_i^2 > n\)

    Part2中的F(i)默认忽略了第一维

  • 注意F(i, j)的第二维只有\(\sqrt{n}\)级别

    \(k*\sqrt{n}\)个数(k为常数)中,包含了1到\(\sqrt{n}\)

    所以Part1转移式中那个"\(F(i - 1, p_{i - 1})\)"不必担心不在范围内

  • Part1的F是从小到大转移的 Part2中的S是从大到小转移的

  • Part2答案式中S(1, n) + 1最后的加一加的是T(1)

    (积性函数T(1) = 1)

  • Part2递推式中\(T(p_{j}^{e+1})\)只是表示指数从2开始累计

    因为\(T(p_j)\)已经在质数中累计过了

解释一下递推式

  • Part1

\(F(i, n) = F(i - 1, n) - T(p_i)(F(i - 1, \lfloor \frac{n}{p_i} \rfloor) - F(i - 1, p_{i - 1}))\)

\(F(i - 1, n)\)很显然是最小质因子大于等于\(p_i\)的数或者质数

要去掉最小质因子恰好是\(p_i\)的数

所以先取出\(p_i\)

\(F(i - 1, \lfloor \frac{n}{p_i} \rfloor)\)表示不大于\(\lfloor \frac{n}{p_i} \rfloor\)最小质因子大于等于\(p_i\)的数 或者 质数

前者乘上\(p_i\)之后 最小质因子必然是\(p_i\)

为了除掉后者 还要减去$ F(i - 1, p_{i - 1})$

小于等于\(p_{i -1}\)最小质因子还是\(p_{i- 1}\)的合数并不存在

所以只去掉了被计算的质数

  • Part2

$T(p_j^e) * S(j + 1, \lfloor \frac{n}{p_j^e} \rfloor) + T(p_j^{e + 1}) $

前半段先取出\(p_i\) 计算最小质因子为\(p_j\)的合数

后半段计算\(p_j\)的多次幂

模板题链接

【模板】裴蜀定理

【模板】exBSGS

【模板】杜教筛

【模板】Pollard-Rho算法

【模板】乘法逆元2

【模板】线性筛素数

【模板】线性筛素数

【模板】Min_25筛

【模板】类欧几里得算法

posted @ 2019-08-03 20:08  hjmmm  阅读(373)  评论(0编辑  收藏  举报