首页 > 其他分享 >数论学习笔记

数论学习笔记

时间:2023-10-23 22:26:04浏览次数:32  
标签:数论 质数 varphi times 学习 pmod 笔记 定理 equiv

目录

  1. 前言

  2. 数论基础

    1.1 整除

    1.2 带余除法,同余

  3. 质数

    2.1 唯一分解定理

    2.2 质数筛(线性筛)

    2.3 欧拉函数

  4. 最大公因数/最小公倍数

    3.1 辗转相除法

    3.2 裴蜀定理

    3.2 扩展欧几里得算法

  5. 线性同余方程

    4.1 费马小定理

    4.2 欧拉定理

    4.3 逆元

    4.4 求解线性同余方程

    4.5 中国剩余定理

  6. 威尔逊定理

  7. 卢卡斯定理

0. 前言

数论太差了,恶补一下。

学一点更一点。

1.数论基础

1.1 整除

设 \(a\in \N^+\) ,\(b\in \Z\) ,若存在整数 \(q\) 使得 \(b=a\times q\) ,则称 \(b\) 可被 \(a\) 整除,记作 \(a|b\) ,称 \(a\) 为 \(b\) 的因数,\(b\) 为 \(a\) 的倍数。

整除的性质:

  1. 若 \(a|b\) 且 \(b|c\) ,则 \(a|c\)。
  2. 若 \(a|b\) 且 \(a|c\) ,则满足 \(a|(b\times x+c\times y)\) ,其中 \(b,c\) 为整数。
  3. 若 \(m \neq 0\),则 \(a\,|\,b \iff am\,|\,bm\)
  4. 若整数 \(x,y\) 满足 \(ax+by=1\) 且 \(a\,|\,n,b\,|\,n\) ,则 \(a\times b\,|\,n\)
  5. 若 \(b=k\times d+c\) ,则 \(d\,|\,b \iff c\,|\,b\)

1.2 带余除法,同余

若存在整数 \(a,b\),\(d\) 为给定的整数 ,满足 \(b=q\times a+r,d\leq r <d+|a|\) ,则称 \(r\) 为 \(b\) 除以 \(a\) 的余数。

也可以记作 \(b\equiv r\,(\text{mod}\,\,a)\) 。意味 \(b\) 与 \(r\) 在取模 \(a\) 意义下相等。

同余的性质:

  1. \(a\equiv b\pmod m,b\equiv c\pmod m\) ,则 \(a\equiv c\pmod m\)
  2. \(a\equiv b\pmod m\) 则 \(a+c\equiv b+c \pmod m\)
  3. \(a\equiv b\pmod m\) 且 \(c\equiv d\pmod m\) ,则 \(a\times c\equiv b\times d\pmod m\)
  4. \(a\times b \equiv k=\) \((a\bmod k)\times(b\bmod k)\)
  5. 若 \(\gcd(p,q)=1, a\equiv b\pmod p,a\equiv b\pmod q\) ,则 \(a\bmod pq=b\)

2. 质数

设整数 $p\neq 0,\pm1 $,且 \(p\) 没有除 \(1\) 外的其它因数,则称 \(p\) 为质数。

任何一个大于 \(3\) 的质数都可以表示为 \(6k+1\) 的形式

2.1 唯一分解定理

引理:若质数 \(p\,|\,ab\) 则 \(p\,|\,a\) 或 \(p\,|\,b\) 满足其一。

设正整数 \(a\) ,则必有:

\[a=p_1^{e_1}p_2^{e_2}\cdots p_n^{e_n} \]

其中 \(p_i\) 为质数,\(e_i\) 为该质数的次数。

在不计次序的情况下,该表示唯一。

2.2 质数筛(线性筛)

我们记 \(f_i\) 标记 \(i\) 是否为质数,\(p_i\) 为已经筛出来的质数。

对于每一个筛出来的质数,我们将它乘上之前筛出的每一个质数,即可筛出所有质数。

为了优化时间,当我们发现这个数曾被筛过便直接跳出循环。

时间复杂度:\(O(n)\)

void work(int n)
{
    for(int i=2;i<=n;i++)
    {
        if(!f[i])
            p[++tot]=i;
        for(int j=1;j<=tot;j++)
        {
            vis[i*p[j]]=1;
            if(i%p[j]==0) break;
        }
    }
}

2.3 欧拉函数

定义:\(\varphi(n)=\sum_{i-1}^n [\gcd(i,n)=1]\)。

性质:

  1. 当 \(n\) 为质数时,\(\varphi(n)=n-1\)。
  2. \(\varphi(ab)=\varphi(a)\times\varphi(b)\)
  3. 当 \(n\) 为奇数时,\(\varphi(n)=\varphi(2n)\)
  4. \(n=\sum_{d|n} \varphi(d)\)
  5. 将 \(n\) 唯一分解后,\(n=\prod p_i^{e_i}\) 则 \(\varphi(n)=n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}\)

线性筛求欧拉函数:

设 \(p_1\) 为 \(n\) 的最小质因子,则:

当 \(\frac{n}{p_1}\bmod p_1=0\) 时,\(\varphi(n)=p_1\times \varphi(\frac n{p_1})\)

否则 \(\varphi(n)=(p_1-1)\times\varphi(\frac n{p_1})\)

标签:数论,质数,varphi,times,学习,pmod,笔记,定理,equiv
From: https://www.cnblogs.com/sheeplittlecloud/p/17783619.html

相关文章

  • flask学习 解决flask migrate 时报No changes in schema detected
    报如上错误说明建表示失败flask-migrate是检测上下文中db.Model的子类来创建表的..,所有我们必须让这个app能够知道有这个models文件的存在,所以,在app文件导入类user......
  • 前端新手学习路线
    @[TOC]前端学习路线!这份学习路线并不完美,也不会有最终形态,正如前端不可预见、永无止境的未来。特点一份全面的前端知识点大梳理和汇总分阶段学习,每个阶段给出学习目标使用符号对知识点的重要程度做了区分,按需学习知识点附有描述和资源链接提供一份清晰的个人顺序学习路线方法提供大......
  • openGauss学习笔记-107 openGauss 数据库管理-管理用户及权限-三权分立
    openGauss学习笔记-107openGauss数据库管理-管理用户及权限-三权分立默认权限机制和管理员两节的描述基于的是openGauss创建之初的默认情况。从前面的介绍可以看出,默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。在实际业务管理中,为了避免系统管理员拥有过度集中的......
  • Scala学习(五)对象
    一、object1、Object相当于class的单个实,通常放一些静态常量和静态方法2、不能定义有参的构造方法3、构造方法只在第一次调用时执行,再次调用不再执行4、可以实现全局变量的功能,如下图 5、object通常用作单例模式的实现,或者存放类的静态成员二、伴生类1、如果同一个scala......
  • 【python笔记】杂乱版
    numpy.tile的作用importnumpyasnp#重复一个标量值scalar=5result1=np.tile(scalar,3)print(result1)#输出:[5,5,5]#重复一个数组arr=[1,2,3]result2=np.tile(arr,2)print(result2)#输出:[1,2,3,1,2,3]#在两个维度上进行不同次数的重......
  • javaweb学习每日总结-第三天
    第三天学习MyBatis 在一天的mybatis学习之后,我了解到了这么一款能够简化jdbc的框架,说到mybatis的作用,就是代替了jdbc,用Java操作数据库,但是他比jdbc更简便更程序化,今天,我在idea配置了mybatis的文件,并且通过mybatis初步查询了数据库中的信息,这也是我第一次使用mybatis来操作数据......
  • Python学习1
    syntax blocks#statements->instruction1.literal90、"ONE"2.operator3.comment4.variablestoremodifyaccess5.functiondefadd(n):#statementreturnn6.keyword Writecodeinoneofthesethreecommonways:Directly(python.exe)Progr......
  • Splay 学习笔记
    Splay概述Splay也称伸展树,是二叉搜索树(BST)的一种近似平衡的类型,由DanielSleator和RobertTarjan于1985年发明。有着极其优秀的复杂度(均摊\(O(log_2n)\))。可以实现Splay(旋转某节点到根),Split(分裂),Merge(合并),Insert(插入),Delete(删除),Get_Rank(根据权值找排名),Get_N......
  • 算法笔记(3)模拟退火
    原发表于个人博客=模拟退火的引入假如我们有一个函数,要求它的极大值,怎么求呢?如果这个函数满足单调性,可以用二分的方法。如果这是一个单谷(或单峰)函数,可以用三分法。那要是多峰函数怎么半呢?这时就可以用随机化算法。一种朴素的方法是:每次在当前找到的最优方案\(x\)附近寻找一......
  • 算法笔记(4)莫队算法入门
    原发表于我的博客前言本来想学完回滚莫队、树上莫队、二离莫队之后一起写一个博客,但是一直学不会/kk,只好把已会的普通莫队和带修莫队写了(以后会补上的)普通莫队莫队——优雅的暴力莫队算法的引入例题:给定一个数列和若干询问,每次询问询问一段区间内不同种类数字的个数。暴力......