清明培训 清北学堂 DAY2
今天是钟皓曦老师的讲授~~
总结了一下今天的内容:
数论!!!
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的更多相关文章
- 清明培训 清北学堂 DAY1
今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1) 高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...
- 五一培训 清北学堂 DAY2
今天还是冯哲老师的讲授~~ 今日内容:简单数据结构(没看出来简单qaq) 1.搜索二叉树 前置技能 一道入门题在初学OI的时候,总会遇到这么一道题.给出N次操作,每次加入一个数,或者询问当前所有数的最 ...
- 五一培训 清北学堂 DAY4
今天上午是钟皓曦老师的讲授,下午是吴耀轩老师出的题给我们NOIP模拟考了一下下(悲催暴零) 今天的内容——数论 话说我们可能真的是交了冤枉钱了,和上次清明培训的时候的课件及内容一样(哭. 整除性 质数 ...
- 五一培训 清北学堂 DAY1
今天是冯哲老师的讲授~ 1.枚举 枚举也称作穷举,指的是从问题所有可能的解的集合中一一枚举各元素. 用题目中给定的检验条件判定哪些是无用的,哪些是有用的.能使命题成立的即为其解. 例一一棵苹果树上有n ...
- 清北学堂Day2
算数基本定理: 1.整数及其相关 2.唯一分解定理 对于任意的大于1的正整数N,N一定能够分解成有限个质数的乘积,即 其中P1<P2<...<Pk,a1,a2,...,ak>= ...
- 五一培训 清北学堂 DAY3
今天是钟皓曦老师的讲授~ 今天的内容:动态规划 1.动态规划 动态规划很难总结出一套规律 例子:斐波那契数列 0,1,1,2,3,5,8,…… F[0]=0 F[1]=1 F[[n]=f[n-1]+ ...
- 五一培训 清北学堂 DAY5
今天是吴耀轩老师的讲解- 今天的主要内容:图论 如何学好图论? 学好图论的基础:必须意识到图论! 图 邻接矩阵存图: 其缺点是显而易见的:1. 空间复杂度O(n^2)不能接受:2.有重边的时候很麻烦: ...
- 7月清北学堂培训 Day 3
今天是丁明朔老师的讲授~ 数据结构 绪论 下面是天天见的: 栈,队列: 堆: 并查集: 树状数组: 线段树: 平衡树: 下面是不常见的: 主席树: 树链剖分: 树套树: 下面是清北学堂课程表里的: S ...
- 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)
清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...
随机推荐
- Spring boot入门(一):快速搭建Spring boot项目
(一)Spring boot介绍 本部分摘自:https://www.zhihu.com/question/64671972/answer/223383505 Spring Boot是由Pivotal ...
- 通过JavaScript调用SOAP终结点执行实体消息
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复148或者20150813可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 利用OData终结点可以方便的对 ...
- procemon
全记录然后筛选子进程,保存成csv 然后用程序处理 需要去掉重复的文件
- Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost
Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost 问题:Tomcat服务器的端口被占用 解决: ...
- asyncio异步IO--同步原语
asyncio同步原语与线程(threading)模块同步原语基本类似,但有两点重要区别: asyncio同步原语非线程安全,因此不应被用作系统线程同步(可以使用threading代替): async ...
- Python ——报错集锦
https://blog.csdn.net/weixin_42660771/article/details/80990665 错误(1):SyntaxError:'return' outside fu ...
- adb server version doesn’t match this client
上传文件到海马玩模拟器 环境变量:ANDROID_SDK_HOME配置是D:\Android\android_sdk_windows 报错:adb server version (31) doesn' ...
- VMware虚拟机系统无法使用桥接联网
1.环境 VMware 14.1.1 虚拟系统:Windows Server 2008 32位 2.解决办法 打开虚拟网络编辑器 有红框中的提示出现时,就点击更改设置 点击桥接模式,在VMnet信息中 ...
- 周末班:Python基础之面向对象基础
面向对象基础 面向对象和面向过程 编程思想是什么,就是用代码解决现实生活中问题的思路. 面向过程 核心点在过程二字,过程指的是解决问题的步骤,说白了就是先做什么再干什么.这种解决问题的思路就好比是工厂 ...
- .NET CORE学习笔记系列(6)——KestrelServer
原文:http://www.cnblogs.com/artech/p/KestrelServer.html 跨平台是ASP.NET Core一个显著的特性,而KestrelServer是目前微软推出了 ...