各种数论定理

小技巧
当算某个数的阶乘或者算很大的次方的时候,可以将数字转换为10^n的进制表示方法(比如1000进制或者10000进制),这样出来点的数字和原答案是一样的,只不过在一个数组的一个元素中多存了几位。

约数个数定理
首先,n可以分解质因数:n=p1^a1×p2^a2×p3^a3*…*pk^ak,
由约数定义可知p1^a1的约数有:p1^0, p1^1, p1^2……p1^a1 ,共(a1+1)个;同理p2^a2的约数有(a2+1)个……pk^ak的约数有(ak+1)个。
故根据乘法原理:n的约数的个数就是(a1+1)(a2+1)(a3+1)…(ak+1)。
欧拉函数
通式:
其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。
约数和定理
对于一个大于1正整数n可以分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,
则由约数个数定理可知n的正约数有(a₁+1)(a₂+1)(a₃+1)…(ak+1)个,
那么n的(a₁+1)(a₂+1)(a₃+1)…(ak+1)个正约数的和为
f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak)
求1~n的最小公倍数**
从1开始记录到达当前值的最小公倍数,如果前一个的最小公倍数能整除当前值,则最小公倍数不变,否则*当前值除过1之外的最小约数,因为到当前值为止,假设到n了,m是n的最小约数(除了1),则n/m肯定在前面出现过,又要求最小公倍数,所以当前的最小公倍数是,抢一个的最小公倍数*m。
数论线性筛法总结
包括素数筛,欧拉函数筛,莫比乌斯函数筛,前n个数的约数个数筛。
费马平方和定理
奇质数能表示为两个平方数之和的充分必要条件是该质数%4==1及4k+1的形式。
拉格朗日四平方和定理
每个正整数均可表示为4个整数的平方和。

m个不同的盒子内放入n个相同的小球的方案数(可以有空盒)
Cnn+m1 C n + m − 1 n 可以将m个盒子想象为m-1块隔板,最后和那个球放在一起就是n+m-1个,然后就是隔板的选法 Cm1n+m1 C n + m − 1 m − 1 和前面的选法是相同的。
当不能有空盒时先给每一个盒子内放1个然后剩下的小球按照上面的方法方就好了

排列组合公式
Cmn C n m = Cnmn C n n − m = Cm1n1 C n − 1 m − 1 + Cmn1 C n − 1 m
C0n C n 0 + C1n C n 1 + C2n C n 2 +…+ Cnn C n n = 2n 2 n
Crn C n r + Cr+1n C n r + 1 = Cr+1n+1 C n + 1 r + 1
Cnn C n n + Cnn+1 C n + 1 n + Cnn+2 C n + 2 n +…+ Cnn+m C n + m n = Cn+1n+m+1 C n + m + 1 n + 1
新方法打逆元表

void init() {  
    F[0] = 1;  
    for(int i = 1; i < MX; i++) {  
        F[i] = (F[i - 1] * i) % mod;  
    }  
    invF[MX - 1] = power(F[MX - 1], mod - 2);  
    for(int i = MX - 2; i >= 0; i--) {  
        invF[i] = invF[i + 1] * (i + 1) % mod;  
    }  
}  

从1到n所有值的异或值
if n % 4 == 0值为n
if n % 4 == 1值为1
if n % 4 == 2值为n+1
if n % 4 == 3值为0

unsigned xor_n(unsigned n)

{

 unsigned t = n & 3;

 if (t & 1) return t / 2u ^ 1;

 return t / 2u ^ n;

}

杨辉三角
第n行第m个数是 Cmn C n m ,当n&m==m成立时可以判断 Cmn C n m 是奇数。

一个数的所有约数(包括自己)的欧拉函数之和,等于这个数本身的值
根据日期计算星期几

int judge(int y,int m,int d)//返回星期几
{
    if(m==1||m==2)
    {
        m+=12;
        y--;
    }
    return ((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7)+1;
}

k1和k2互素,结论是k1*k2和k1+k2也是互素的。

错排公式

    ans[1]=0;
    ans[2]=1;
    ans[3]=2;
    for(int i=4;i<=20;i++)
        ans[i]=(i-1)*(ans[i-1]+ans[i-2]);

四大定理
1.威尔逊定理
(p1)!1modp ( p − 1 ) ! ≡ − 1 mod p ,p为质数。
2.欧拉定理
phi(n),小于n和n互素的数字个数。
在 [1,n] 中与 n 互素的数的和为: phi(n)n2 p h i ( n ) ∗ n 2
3.费马小定理
a(p1)1modp a ( p − 1 ) ≡ 1 mod p ,p是质数,且p不能整除a。
4.费马大定理
当整数n >2时,关于x, y, z的方程 xn+yn=zn x n + y n = z n 没有正整数解。

从0开始每次跳a步,上限是m-1,可以无限次的跳,则跳过得值是gcd(m,a)的倍数

持续更新中………

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值