【学习整理】NOIP涉及的数论 [updating]
扩展欧几里得
求二元一次不定式方程 的一组解。
int exgcd(int a,int b,int &x,int &y)
{
int t;
if(!b) {x=1;y=0;return a;}
t=exgcd(b,a%b,y,x);
y-=(a/b)*x;
return t;
}
线性筛质数
维护一个质数表。对于每个数 , 从小到大枚举所有质数
,将
打上标记。 如果
, 停止枚举。
void getprime()
{
int i,j;
for(i=2;i<=n;i++)
{
if(!b[i]) prime[++tot]=i;
for(j=1;j<=tot&&i*prime[j]<=n;j++)
{
b[i*prime[j]]=true;
if(!i%prime[j]) break;
}
}
}
线性求逆元
逆元的定义:称x是a在模b意义下的逆元,可理解为
。
给定一个质数 ,求出
至
的逆元。
证明:
费马小定理
若 是质数, 则
证明:
因为 , 所以
.
线性求欧拉函数
欧拉函数的定义:小于等于
的正整数中与
互质的数的个数。
设 为
最小的质数,
。在线性筛中,
被筛
掉。
当时,
。
当时,
。
void getphi()
{
int i,j;
phi[1]=1;
for(i=2;i<=n;i++)
{
if(!b[i])
{
prime[++tot]=i;
phi[i]=i-1;
}
for(j=1;j<=tot;j++)
{
if(i*prime[j]>n) break;
b[i*prime[j]]=true;
if(i%prime[j]==0)
{
phi[i*prime[j]]=phi[i]*prime[j];
break;
}
else phi[i*prime[j]]=phi[i]*(prime[j]-1);
}
}
}
欧拉定理
若 , 则
。
证明:
记 , 记
为
到
中与
互质的数。
由 消去律 得
Miller-Rabin算法 素数测试
记
在 中随机选取一个整数
, 如果
或
, 那么我们认为n是质数。
错误率不超过1/4,重复若干次即可。
long long mod_mul(long long,long long,long long);
long long mod_exp(long long,long long,long long);
bool miller_rabbin(long long n)
{
int i,j,t;
long long a,x,y,u;
if(n==2)return true;
if(n<2||!(n&1)) return false;
t=0;u=n-1;
while((u&1)==0) t++,u>>=1;
for(i=1;i<=tim;i++)
{
a=rand()%(n-1)+1;
x=mod_exp(a,u,n);
for(j=0;j<t;j++)
{
y=mod_mul(x,x,n);
if(y==1&&x!=1&&x!=n-1) return false;
x=y;
}
if(x!=1) return false;
}
return true;
}
long long mod_mul(long long a,long long b,long long mod)
{
long long res=0;
while(b)
{
if(b&1) res=(res+a)%mod;
a=(a+a)%mod;
b>>=1;
}
return res;
}
long long mod_exp(long long a,long long b,long long mod)
{
long long res=1;
while(b)
{
if(b&1) res=mod_mul(res,a,mod);
a=mod_mul(a,a,mod);
b>>=1;
}
return res;
}
Pollard-rho算法 分解合数
中国剩余定理
解方程组 其中
两两互质。
大步小步法(BSGS)及其拓展
求最小的 使得
,
为质数。
莫比乌斯反演
已知 求
。
原根的基本性质
拉格朗日定理
二次剩余
【学习整理】NOIP涉及的数论 [updating]的更多相关文章
- HttpClient学习整理
HttpClient简介HttpClient 功能介绍 1. 读取网页(HTTP/HTTPS)内容 2.使用POST方式提交数据(httpClient3) 3. 处理页面重定向 ...
- JavaScript学习整理(转载)
JavaScript的学习整理(一) 目录: 1.换皮肤功能2.显示/隐藏(点击切换)3.显示/隐藏(onmouseover/onmouseout)4.选项卡5.全选/不选/反选(checkbox)6 ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- TweenMax学习整理--特有属性
TweenMax学习整理--特有属性 构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓 ...
- !!对python列表学习整理列表及数组详细介绍
1.Python的数组分三种类型:(详细见 http://blog.sina.com.cn/s/blog_6b783cbd0100q2ba.html) (1) list 普通的链表,初始化后可以通过特 ...
- Java设计模式(学习整理)---命令模式
设计模式之Command(学习整理) 1.Command定义 不少Command模式的代码都是针对图形界面的,它实际就是菜单命令,我们在一个下拉菜单选择一个命令时,然后会执行一些动作. 将这些命令封装 ...
- Wix学习整理(5)——安装时填写注册表
原文:Wix学习整理(5)--安装时填写注册表 一 Microsoft操作系统的注册表 什么是注册表? 注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信 ...
- Wix学习整理(6)——安装快捷方式
原文:Wix学习整理(6)--安装快捷方式 一 为HelloWorld案例添加安装快捷方式 通常我们安装一个应用软件的时候,都喜欢在桌面或开始菜单中添加快捷方式以便我们快速访问.现在我们就在上篇添加注 ...
- Wix学习整理(7)——在开始菜单中为HelloWorld添加卸载快捷方式
原文:Wix学习整理(7)--在开始菜单中为HelloWorld添加卸载快捷方式 通过前面的几篇随笔,我们已经给我们的HelloWorld提供了填写注册表信息,以及开始菜单快捷方式和桌面快捷方式.这些 ...
随机推荐
- [GraphQL] Serve a GraphQL Schema as Middleware in Express
If we have a GraphQL Schema expressed in terms of JavaScript, then we have a convenient package avai ...
- Rxlifecycle(二):源码解析
1.结构 Rxlifecycle代码很少,也很好理解,来看核心类. 接口ActivityLifecycleProvider RxFragmentActivity.RxAppCompatActivity ...
- (笔记)Linux内核学习(五)之中断推后处理机制
一 中断 硬件通过中断与操作系统进行通信,通过对硬件驱动程序处注册中断处理程序,快速响应硬件的中断. 硬件中断优先级很高,打断当前正在执行的程序.有两种情况: 硬件中断在中断处理程序中处理 硬件中断延 ...
- MxNet Windows下安装
项目链接:https://github.com/dmlc/mxnet 因为要做一些开发工作,prebuilt的lib不能满足需求.由于工作环境要求是windows,所以可以利用cmake工具来构建. ...
- spring中bean配置和bean注入
1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean ...
- 用gameMaker做个小游戏
看下面这个课程链接,半小时学会 http://study.163.com/course/courseMain.htm?courseId=352004#/courseMain 这是我做的:http:// ...
- c/c++: c++继承 内存分布 虚表 虚指针 (转)
http://www.cnblogs.com/DylanWind/archive/2009/01/12/1373919.html 前部分原创,转载请注明出处,谢谢! class Base { pu ...
- 又是一个小正则replace
var a = "http://www.xx.com?id=111&-deb"; var b = "http://www.xx.com?-deb&id=1 ...
- centos nfs配置--转载
http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-nfs-client-config.html 18.6. NFS Server ...
- 【转载】C/C++ 函数指针 总结
转载自:http://blog.csdn.net/shihui512/article/details/9787125 什么是函数指针函数指针的声明函数指针的赋值函数指针的使用将函数作为其他函数的参数在 ...