zoukankan      html  css  js  c++  java
  • 基础数论重学笔记

    之前都没有怎么理解,现在来复习一下。

    费马小定理

    对于任意质数 (p) 和任意整数 (a) 满足 (gcd(a,p)=1),有 (a^{p-1}equiv 1pmod p)

    引理 1

    对于任意三个正整数 (a,b,c) 满足 (gcd(c,m)=1),若 (acequiv bcpmod m),则 (aequiv bpmod m)

    证明:

    变成 (c(a-b)equiv 0pmod m) 之后,因为互质所以可以扔掉 (m)

    引理 2

    ({a_1,cdots,a_m})(m) 的完全剩余系,存在整数 (b) 满足 (gcd(b,m)),那么 ({a_1 imes b,cdots,a_m imes b}) 也是 (m) 的完全剩余系。

    证明:

    反证法。如果存在 (a_i imes bequiv a_j imes bpmod m),根据引理 1 可得 (a_iequiv a_jpmod m)(a) 不可能是完全剩余系。

    证明

    构造关于 (p) 的完全剩余系 ({1,2,cdots,p-1,p})

    根据引理 2 可得 ({a,2a,cdots,(p-1)a,pa}) 也是 (p) 的完全剩余系。

    一一对应可得 (1 imes 2 imescdots imes(p-1)equiv a imes 2a imescdots imes(p-1)apmod p)

    ((p-1)!equiv(p-1)! imes a^{p-1}pmod p)

    显然 (gcd(p,(p-1)!)=1),根据引理 1 即可证毕。

    欧拉定理

    (a^{phi(n)}equiv 1pmod n),其中 (gcd(a,n)=1)

    费马小定理是 (n) 为质数的一种特殊情况。

    证明好像不能用费马小定理的套,等看懂了再来补。

    裴蜀定理

    不定方程 (ax+by=c) 有解的充分必要条件是 (gcd(a,b)|c)

    证明

    充分性:用拓展欧几里得的构造方法就可以构造出来。

    必要性:因为 (gcd(a,b)|ax)(gcd(a,b)|by),所以 (gcd(a,b)|ax+by)

    卢卡斯定理

    [inom{n}{m}equivinom{n/p}{m/p}inom{nmod p}{mmod p}pmod p ]

    适用于 (p) 较小的情况。

    证明太难了先鸽着。

    试除法

    (2) 枚举到 (lfloorsqrt n floor) 判断能否整除。

    埃氏筛

    从小到大枚举每个质数,将范围内它的倍数全部标记为合数。

    当然有一个小优化,对于 (i) 这个质数,枚举 (j) 筛掉 (i imes j) 的时候我们强制钦定 (ileq j),如果 (i>j) 的话 (i imes j) 肯定在 (j) 中至少一个质因子那里筛过了。

    时间复杂度 (Oleft(nloglog n ight)),会了再来补。

    欧拉筛

    发现埃氏筛中的小优化没有优化彻底,一个合数仍然可能被筛多次。我们希望一个合数只在它最小的质因数那里被筛一次。

    对于每个数 (i),尝试枚举小于等于 (i) 的每个质数 (p) 同时筛去 (p imes i)。一旦 (p|i) 就直接退出循环。

    为什么这样是对的呢?我们发现如果 (p imes i) 被一个比 (p) 更小的质数 (q) 筛去了,那么 (q|i)

    而之前肯定已经枚举过了 (q),并跳出了循环,不可能做到 (p)

    于是这个东西就是线性的啦。

    乘法逆元

    乘法逆元,是指数学领域群 (G) 中任意一个元素 (a),都在 (G) 中有唯一的逆元 (a'),具有性质 (a imes a'=a' imes a=e),其中 (e) 为该群的单位元。

    单位元是集合里的一种特别的元,与该集合里的运算有关。当它和其他元素结合时,并不会改变那些元素。

    所以在模域下的乘法中,单位元就是 (1)

    当然如果模数不是质数,一些数不存在乘法逆元。

    在 OI 中是解决模意义下除法的必备方法。

    在求 (frac{y}{x}) 时我们可以先求出 (frac{1}{x}) 再乘上 (y)

    具体地,若 (a imes bequiv 1pmod p),其中 (gcd(a,p)=1),则称 (b)(a) 在模 (p) 意义下的乘法逆元,记作 (a^{-1}),即 (bequivfrac{1}{a}pmod p)

    存不存在乘法逆元的证明以及一些更深刻的理解(?)之后再补。

    下面介绍几种求乘法逆元的方法。

    费马小定理

    只能解决 (p) 是质数的情况。

    [a imes bequiv 1pmod p ]

    [a imes bequiv a^{p-1}pmod p ]

    [bequiv a^{p-2}pmod p ]

    欧拉定理

    需要事先求出 (phi(a))

    [a imes bequiv 1pmod p ]

    [a imes bequiv a^{phi(a)}pmod p ]

    [bequiv a^{phi(a)-1}pmod p ]

    把两个定理分开感觉写了一堆废话……

    拓展欧几里得

    发现这是个同余方程的形式,然后就没了。

    递推

    没啥用,咕咕咕。

    阶乘

    在求组合数时我们常常会需要求阶乘的逆元。

    考虑递推,从 (i) 推到 (i-1)

    [frac{1}{(i-1)!}equivfrac{1}{i!} imes ipmod p ]

    就做到了线性。

    再深入思考一下你会发现 (frac{1}{i!} imes(i-1)!=frac{1}{i}pmod p)

    然后就可以简单地替代上一种递推了。

  • 相关阅读:
    近期安卓与IOS招聘面试有感
    java线程池技术(二): 核心ThreadPoolExecutor介绍
    java线程池技术(一):ThreadFactory与BlockingQueue
    Java设计模式之策略模式与状态模式
    java线程间通信:一个小Demo完全搞懂
    Android M 新的运行时权限开发者需要知道的一切
    Java多线程同步问题:一个小Demo完全搞懂
    java多线程之守护线程以及Join方法
    安卓电量优化之JobScheduler使用介绍
    安卓电量优化之WakeLock锁机制全面解析
  • 原文地址:https://www.cnblogs.com/May-2nd/p/14195442.html
Copyright © 2011-2022 走看看