首页 > 其他分享 >数论

数论

时间:2023-02-27 22:33:14浏览次数:30  
标签:return 数论 n% long int ans rea

 

 

 

 

 

1.贝尔数

for(int i=2;i<=n;i++){
     for(int j=0;j<i;j++){
            a[i]+=a[j]*C(i-1,j);
        }
    }

  

2.埃氏筛

 for(int i=2;i<N/i;i++){
        if(P[i]==0)
        for(int j=i*i;j<N;j+=i)P[j]=1;
    }

  

3.欧拉筛

for(int i=2;i<=n;i++){
        if(numlist[i]==false)prime[++cnt]=i;
        for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
            numlist[i*prime[j]]=true;
            if(i%prime[j]==0)break;
        } 
    }

  

4.唯一分解定理

long long fenjie(long long &n,long long t)
{
    if(n%t!=0)return 0;
    int sum=0;
    while(n%t==0)
    {
        n/=t;
        sum++;
    }
    return sum;
}

  

 

5.素数环

void dfs(int depth){
    if(depth==21){
        if(isPrime(n+a[20])){
            for(int i=1;i<=20;i++)cout<<a[i]<<' ';
            cout<<'\n';
            flag=1;
        }
    }
    if(flag)return;
    for(int i=1;i<=20;i++){
        if(!p[i]&&isPrime(i+a[depth-1])){
            p[i]=1;
            a[depth]=i;
            dfs(depth+1);
            p[i]=0;
        }
    }
}

  

6.日期问题

int days(int x,int y,int z){
    int ans=0;
    for(int i=1900;i<x;i++){
        if(leap(i))ans+=366;
        else ans+=365;
    }
    for(int i=1;i<y;i++){
        if(leap(x)&&i==2)ans+=29;
        else ans+=months[i];
    }
    return ans+z;
}

 

7.快速幂

 

long long quickPow(long long n,long long k,long long m){
    long long ans=1;
    while(k){
        if(k&1){
            ans=(ans*(n%m))%m;
        }
        n=((n%m)*(n%m))%m;
        k>>=1;
    }
    return ans;
}

 

 

8.乘法逆元

long long get_inv(long long x,long long p){
    return quickPow(x,p-2,p);
}

  

9.整除分块

long long zcfk(long long n){
    long long res=0;
    for(long long l=1,r;l<=n;l=r+1){
        r=n/(n/l);
        res+=n/l*(r-l+1);
    }
    return res;
}

  

10.欧拉函数

long long Euler(long long n){
    int rea=n;
    for(int i=2;i*i<=n;i++){
        if(n%i==0){
            rea-=rea/i;
            while(!(n%i)){
                n/=i;
            }
        }
    }
    if(n>1)rea-=rea/n;
    return rea;
}

  

 

标签:return,数论,n%,long,int,ans,rea
From: https://www.cnblogs.com/zhanghx-blogs/p/17162166.html

相关文章

  • 数论 / number theory 中不经意间发现的好玩的
    完全数/perfectnumbers他们的真因子(除了本身以外的所有因子)之和为自己:$6=3+2+1$,$28=14+7+4+2+1$,$496=248+124+62+31+16+8+4+2+1$,$8128=4064+2032+1016+508+254+1......
  • 数论基础笔记
    数论基础DanBoneh课程中数论基础笔记,该部分内容用于构建以下密码学相关部分:KeyExchangeProtocolsDigitalSignaturesPublic-KeyEncryption目录数论基础Notation......
  • 数论,但是板子
    你猜为什么我数学那么差?1.从欧几里得算法到扩展欧几里得算法我们一般用欧几里得算法求最大公约数,它差不多就这样\(\gcd(m,n)=\begin{cases}n&m=0\\\gcd(n,m\bmo......
  • 【YBT2023寒假Day15 C】缺口一样(数论)(莫队)(根号分治)
    缺口一样题目链接:YBT2023寒假Day15C题目大意给你一个序列,多次询问,每次问你一个区间这里面所有非空点集的最大公约数之积,对质数取模。思路首先质因子之间是独立的,考虑......
  • hdu 2608 0 or 1(数论)
    0or1TimeLimit:6000/2000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):1659    AcceptedSubmission(s):418Pro......
  • Codeforces - 1244C - The Football Season(暴力 + 数学规律 + 数论 / *2000)
    1244C-TheFootballSeason(⇔源地址)目录1244C-TheFootballSeason(⇔源地址)tag题意思路暴力解(枚举)数论解(扩展欧几里得)AC代码错误次数:2tag⇔......
  • [bzoj 4176] Lucas的数论 (杜教筛 + 莫比乌斯反演)
    题面设为的约数个数,给定,求题目分析有这样一个结论这道题就是下面这道题的数据增强版,那么这个结论的证明就不再赘述,请自行查看下面的(蒟蒻)博客​​传送门:[SDOI2015][bz......
  • 密码学简单数论(3):算术基本定理证明、等价关系、同余和乘法逆元
    参考资料:1.https://www.bilibili.com/video/BV1x3411s7Sy/?spm_id_from=333.788&vd_source=e66dd25b0246f28e772d75f11c80f03c算术基本定理证明  定理2-2(算术基本定......
  • A - k-rounding 【2022级专题四数论课后练习】
    A-k-rounding[原题链接]思路求\(n\)和\(10^k\)的最小公倍数最小公倍数和最大公因数的关系\(a\cdotb=最小公倍数\cdot最大公因数\)代码点击查看代码#incl......
  • 数论
    数论笔记求\(\varphi(n)\)普通求法:首先将n唯一分解为$n=x_1{p_1}*x_2……*x_n^{p_n}$\(\varphi(n)=n*(1-\frac1{x_1})*(1-\frac1{x_2})*……*(1-\frac1{x_n})\)证明:......