扩展欧几里得

求二元一次不定式方程 NOIP涉及的数论的一组解。

NOIP涉及的数论
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;
}
NOIP涉及的数论

 

线性筛质数

维护一个质数表。对于每个数 NOIP涉及的数论, 从小到大枚举所有质数 NOIP涉及的数论,将 NOIP涉及的数论打上标记。 如果 NOIP涉及的数论, 停止枚举。

NOIP涉及的数论
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;
        }
    }
}
NOIP涉及的数论

 

线性求逆元 

逆元的定义:NOIP涉及的数论称x是a在模b意义下的逆元,可理解为NOIP涉及的数论

给定一个质数 NOIP涉及的数论 ,求出 NOIP涉及的数论 至 NOIP涉及的数论的逆元。

NOIP涉及的数论

证明:

 NOIP涉及的数论

NOIP涉及的数论

NOIP涉及的数论

 

费马小定理

若 NOIP涉及的数论 是质数, 则 NOIP涉及的数论

证明:

因为 NOIP涉及的数论, 所以NOIP涉及的数论.

NOIP涉及的数论

NOIP涉及的数论

NOIP涉及的数论

 

线性求欧拉函数

欧拉函数NOIP涉及的数论的定义:小于等于NOIP涉及的数论的正整数中与NOIP涉及的数论互质的数的个数。

NOIP涉及的数论

设 NOIP涉及的数论 为 NOIP涉及的数论 最小的质数,NOIP涉及的数论。在线性筛中,NOIP涉及的数论被筛NOIP涉及的数论掉。

NOIP涉及的数论时,NOIP涉及的数论

NOIP涉及的数论时,NOIP涉及的数论

NOIP涉及的数论
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);
       }  
     }  
}
NOIP涉及的数论

 

欧拉定理

若 NOIP涉及的数论 , 则 NOIP涉及的数论

证明:

记 NOIP涉及的数论 , 记 NOIP涉及的数论 为 NOIP涉及的数论到 NOIP涉及的数论 中与 NOIP涉及的数论 互质的数。

NOIP涉及的数论

NOIP涉及的数论

由 消去律 得  NOIP涉及的数论

 

Miller-Rabin算法  素数测试

记 NOIP涉及的数论 

在 NOIP涉及的数论 中随机选取一个整数 NOIP涉及的数论 , 如果 NOIP涉及的数论 或 NOIP涉及的数论 , 那么我们认为n是质数。

错误率不超过1/4,重复若干次即可。

NOIP涉及的数论
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;
}
NOIP涉及的数论

 

Pollard-rho算法 分解合数

 

 

中国剩余定理

解方程组 NOIP涉及的数论  其中 NOIP涉及的数论 两两互质。

 

 

大步小步法(BSGS)及其拓展

求最小的 NOIP涉及的数论 使得 NOIP涉及的数论 , NOIP涉及的数论为质数。

 

 

莫比乌斯反演

已知      NOIP涉及的数论 求 NOIP涉及的数论

 

 

原根的基本性质

 

 

拉格朗日定理

 

 

二次剩余

相关文章:

  • 2021-11-10
  • 2021-08-16
  • 2022-12-23
  • 2022-12-23
  • 2021-12-30
  • 2021-08-15
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-08
  • 2021-12-02
  • 2021-10-18
  • 2021-06-24
  • 2021-04-08
  • 2021-11-04
相关资源
相似解决方案