今天是钟皓曦老师的讲授~~

总结了一下今天的内容:

数论!!!

1.整除性

2.质数

定义:

性质: 

3.整数分解定理——算数基本定理

证明:

存在性:

设N是最小不满足唯一分解定理的整数

(1)  若N为质数,则N=N¹,所以N不存在;

(2)  若N为合数,则N=P*(N/P),因为N/P也是不满足定理的整数

所以与N是不满足定理的最小整除相矛盾

所以N不存在

唯一性:

4.素数的判定

(注:s.t.是“使得”的意思)

根据钟神长者的小学经验:取2,3,5,7,13,29,37,89这8个素数在int范围内是100%准的

时间复杂度为O(klogn)

怎么代码实现呢???

首先我们要先求出d和r,然后快速幂求出a^d和a^(d*2^i)

a^(d*2^i)当然有别的好方法求啦,看下面:

a^(d*2^(i-1)*2)=(a^(d*2^(i-1)))^2=((a^(d*2^(i-2)))^2)^2……最后搞下去就变成了a^(d*2^i)

所以我们只要把快速幂后的a^(d*2^i)再进行快速幂就行啦

程序代码:

int gg[8] = {2,3,5,7,13,29,37,89};            //8个好用的素数

bool miller_rabin(int a,int n)                   
{
int d=n-1,r=0;
while (d%2==0)
d/=2,r++;                                                //求d和r
int x = kuaisumi(a,d,n);                          //快速幂a^d
if (x==1) return true;                              //判断a^d%n是否为1,若是,则可能是质数;若否,进行下一层判断
for (int i=0;i<r;i++)
{
if (x==n-1) return true;
x=(long long)x*x%n;                             //将a^d进行快速幂来判断a^(d*2^i)%n是否为-1也就是n-1;
}
return false;
}

bool is_prime(int n)
{
if (n<=1) return false;
for (int a=0;a<8;a++)
if (n==gg[a]) return true;                               //判断n是否为列举的素数中的任何一个,若是则直接判为素数
for (int a=0;a<8;a++)
if (!miller_rabin(gg[a],n)) return false;           //进行miller_rabin素数检查
return true;
}

int kuaisumi(int a,int d,int n) {                  //快速幂函数

int ans=1;

while(b)

{

if(b&1)  ans=ans*a%n;

a=a*a%n;

b>>=1;

}

5.裴蜀定理

设d=gcd(a,b);

6.扩展欧几里得

程序代码:

第10行和第4行都是返回的最大公约数,而x,y的值都地址返回了

7.中国剩余定理

另外我们还可以用大数翻倍法做

8.逆元

定义:

我们都知道欧拉定理:

怎么证呢???

(1)  

那么都<n且都与n互质

所以对于mod n是不同余的

那么同乘a也是不同余的

那么这其中的任何

这样我们得到了

既然这其中的任何,那么

这样我们得到了

每一个乘a后mod n的余数不变,那么我们可以说

这样我们就得到了

由此我们就可以得到:

9.Miller_Rabin 二次侦探定理

说明一下:     x²≡1 (mod p)

x²-1≡0 (mod p)

(x+1)(x-1)≡0 (mod p)

x≡1或-1

a^(d*2^r)-1≡0 (mod p)

(a^(d*2^(r-1))-1)(a^(d*2^(r-1))+1)≡0 (mod p)

a^(d*2^(r-1))≡1或a^(d*2^(r-1))≡-1

若a^(d*2^(r-1))≡-1,则满足Miller_Rabin的第二个式子,直接判定n为质数

否则a^(d*2^(r-1))≡1

a^(d*2^(r-1))-1≡0 (mod p)

(a^(d*2^(r-2))+1)(a^(d*2^(r-2))-1)≡0 (mod p)

a^(d*2^(r-2))≡1或a^(d*2^(r-2))≡-1

若a^(d*2^(r-2))≡-1,则满足Miller_Rabin的第二个式子,直接判定n为质数

否则a^(d*2^(r-2))≡1

……

10.线性求逆元

程序代码:

int inv[i]=1;

for(int i=2;i<=10;i++)

{

inv[i]=(p-(p/i))*inv[p%i]%p;

}

11.BSGS算法

先来引入积性函数和完全积性函数的概念:

以下是几个常见的积性函数:

可能大家对莫比乌斯函数μ(n)不大熟悉,我来给大家介绍一下:

我们来了解一下莫比乌斯函数的性质

答案很简单:当n=1时,答案为1;当n不为1时,答案为0;

莫比乌斯反演

F(n)和f(n)为算术函数,若他们满足

则有

清明培训 清北学堂 DAY2的更多相关文章

  1. 清明培训 清北学堂 DAY1

    今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1)   高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...

  2. 五一培训 清北学堂 DAY2

    今天还是冯哲老师的讲授~~ 今日内容:简单数据结构(没看出来简单qaq) 1.搜索二叉树 前置技能 一道入门题在初学OI的时候,总会遇到这么一道题.给出N次操作,每次加入一个数,或者询问当前所有数的最 ...

  3. 五一培训 清北学堂 DAY4

    今天上午是钟皓曦老师的讲授,下午是吴耀轩老师出的题给我们NOIP模拟考了一下下(悲催暴零) 今天的内容——数论 话说我们可能真的是交了冤枉钱了,和上次清明培训的时候的课件及内容一样(哭. 整除性 质数 ...

  4. 五一培训 清北学堂 DAY1

    今天是冯哲老师的讲授~ 1.枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素. 用题目中给定的检验条件判定哪些是无用的,哪些是有用的.能使命题成立的即为其解. 例一一棵苹果树上有n ...

  5. 清北学堂Day2

    算数基本定理: 1.整数及其相关 2.唯一分解定理 对于任意的大于1的正整数N,N一定能够分解成有限个质数的乘积,即 其中P1<P2<...<Pk,a1,a2,...,ak>= ...

  6. 五一培训 清北学堂 DAY3

    今天是钟皓曦老师的讲授~ 今天的内容:动态规划 1.动态规划 动态规划很难总结出一套规律 例子:斐波那契数列  0,1,1,2,3,5,8,…… F[0]=0 F[1]=1 F[[n]=f[n-1]+ ...

  7. 五一培训 清北学堂 DAY5

    今天是吴耀轩老师的讲解- 今天的主要内容:图论 如何学好图论? 学好图论的基础:必须意识到图论! 图 邻接矩阵存图: 其缺点是显而易见的:1. 空间复杂度O(n^2)不能接受:2.有重边的时候很麻烦: ...

  8. 7月清北学堂培训 Day 3

    今天是丁明朔老师的讲授~ 数据结构 绪论 下面是天天见的: 栈,队列: 堆: 并查集: 树状数组: 线段树: 平衡树: 下面是不常见的: 主席树: 树链剖分: 树套树: 下面是清北学堂课程表里的: S ...

  9. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

随机推荐

  1. DIV中文字换行显示

    居然第一次遇到这种问题,还想了半天到底是怎么回事,为什么明明div设置宽度了,里面的文字超过宽度后居然不换行. (1)word-break属性,可以让浏览器实现在任意位置换行. normal:使用浏览 ...

  2. [ SHELL编程 ] 字符串空格和文件空行删除

    1.删除字符串中空格 (1)删除行首空格 (2)删除行尾空格 (3)删除前.后空格,不删除中间空格 (4) 删除字符串中所有空格 echo " 123 567 " | sed 's ...

  3. 如何为 .NET Core CLI 启用 TAB 自动补全功能

    如何为 .NET Core CLI 启用 TAB 自动补全功能 Intro 在 Linux 下经常可以发现有些目录/文件名,以及有些工具可以命令输入几个字母之后按 TAB 自动补全,最近发现其实 do ...

  4. js 数组去重小技巧

    js 数组去重小技巧 Intro 今天遇到一个问题,需要对数据进行去重,想看一下有没有什么比较方便的方法,果然有些收获. Question 问题描述: 我有一个这样的数据: [ { "Pro ...

  5. ffmpeg相关函数整理

    1.av_read_frame() 该函数用于读取具体的音/视频帧数据,从流中读取数据帧到 AVPacket,AVPacket保存仍然是未解码的数据 int av_read_frame(AVForma ...

  6. Mysql中联合索引的最左匹配原则

    在Mysql建立多列索引(联合索引)有最左前缀的原则,即最左优先. 如果我们建立了一个2列的联合索引(col1,col2),实际上已经建立了两个联合索引(col1).(col1,col2); 如果有一 ...

  7. KAPTCHA验证码使用步骤

    使用kaptcha可以方便的配置: · 验证码的字体 · 验证码字体的大小 · 验证码字体的字体颜色 · 验证码内容的范围(数字,字母,中文汉字!) · 验证码图片的大小,边框,边框粗细,边框颜色 · ...

  8. 【English EMail】Compensation Planning Memo

    Data Foundation  数据基础 [faʊnˈdeʃən] Interesting newsletter for data foundation practice. Annual Code ...

  9. Java线程状态转换

    前言:对于Java线程状态方面的知识点,笔者总感觉朦朦胧胧,趁着最近整理资料,将Java线程状态方面的知识点总结归纳,以便加深记忆. 1.Java线程状态值 在Thread类源码中通过枚举为线程定义了 ...

  10. 苹果手机连接Wifi认证机制

    Wifi状态保持方法和nas设备 https://patents.google.com/patent/CN106793171A/zh 基于ios终端的离线wifi热点认证方法和认证系统 https:/ ...