【学习整理】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)及其拓展

求最小的 使得 为质数。

莫比乌斯反演

已知     

原根的基本性质

拉格朗日定理

二次剩余

时间: 2024-12-05 21:11:12

【学习整理】NOIP涉及的数论 [updating]的相关文章

HttpClient学习整理

HttpClient简介 HttpClient 功能介绍     1. 读取网页(HTTP/HTTPS)内容     2.使用POST方式提交数据(httpClient3)     3. 处理页面重定向     4. 模拟登录开心网     5. 提交XML格式参数     6. 访问启用认证的页面     7. 多线程模式下使用httpclient httpClient完整封装 HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Ja

Android必备:Android Socket编程的了解与学习整理

看这里:Android必备:Android Socket编程的了解与学习整理 最近学习Android的过程中,由于项目.业务等因素影响,服务端通过Socket进行通信,于是开始学习Socket编程,之前的开发中,很少涉及此 方面的知识学习,本篇就来简单的整理一下,通过Android客户端进行Socket登录的demo,来进行Adnroid Socket编程的学习. 在开始学习之前,先来了解一下Socket,以下内容来自百度百科: 通常也称作"套接字",用于描述IP地址和端口,是一个通信

ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

崧闱旭 ijwmh1-2-以前学习整理出来的学习内容--什么是变量1整型变量

java中反射学习整理

转载请注明:http://blog.csdn.net/j903829182/article/details/38405735 反射主要是指程序可以访问,检测和修改它本身的状态或行为的一种能力. java中反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装载,无须在组件之间进行链接.反射允许在编写与执行时,使程序能够接入到jvm中的类的内部信息,而不是源代码中选定的类协作的代码.这使反射成为构建灵活应用代码的主要工具.需要注意的是,如果使用不当,反射的成本会很高. package

AJAX学习整理二之简单实例

做了几个简单的实例,加载txt文本内容.加载xml文件内容,把xml文本内容转换成html表格显示.废话不多说,直接贴代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head>     <title>通过ajax获取文本内容</title>     <meta charset="utf-8">     <scr

java密码学学习整理--对称加密(着重描述3des)

1.对称加密要点 对称加密算法的核心是加密和解密操作使用同一套密钥.加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 2.des(参考自:http://baike.baidu.com/view/878529.htm?from_id=210508&type=syn&fromtitle=DES&fr=aladdin) DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的

2017年 1月 15日 指针 学习整理

有关指针的概念: 指针是一个特殊的变量,它里面存储的数值被解释为内存里的一个地址. FIrst of all:我们需要明确目标 关于指针的学习以及使用我们需要搞清楚有关指针的四个内容:指针的类型,指针所指向的类型,指针的值(或者说叫指针所指向的内存区),还有指针本身所占用的内存区(指针也是一个特殊的变量吗,它肯定也是占据内存的).接下来让我们分别进行学习. 我们先来申明几个指针的例子: 1 int *ptr; 2 char *ptr; 3 int **ptr; 4 int (*ptr)[3];

TweenMax学习整理--特有属性

TweenMax学习整理--特有属性 构造函数:TweenMax(target:Object, duration:Number, vars:Object) target:Object -- 需要缓动的对象 duration:Number -- 缓动持续时间 vars:Object -- 其它参数(特有属性29个,插件17个,公共属性10个,公共方法20个) TweenMax提供的方法大多都会返回一个TweenMax Object实例 [特有属性(29个)] 这29个参数可以直接传入第三个obje

linux学习 整理(1)

ls目录文件 uname 现实当前系统信息 clear 清理 history 历史记录 ctrl + R 搜索历史记录 ESC按完之后按. 补齐上次参数 切换root用户 su - 使用管理员权限运行命令 sudo 现实当前用户信息 id 修改当前用户密码 passwd 命令 + & 在后台运行进程 jobs查看后台作业 ctrl + Z 暂停某个程序 bg 控制进程继续在后台运行 fg 控制进程在前台运行 ctrl + C 结束当前命令 linux学习 整理(1),布布扣,bubuko.com