zoukankan      html  css  js  c++  java
  • 6. 数论准备知识

    1. 同余符号:equiv

    (1)含义

    两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余,记作a≡b(mod m)。读作a同余于b模m,或读作a与b关于模m同余。
    例:26≡14(mod 12)。

    (2)定义

    设m是大于1的正整数,a,b是整数,如果m|(a-b),则称a与b关于模m同余,记作a≡b(mod m),读作a同余于b模m。

    (3)性质

    (1)若a≡0(mod m),则m|a;
    (2)a≡b(mod m)等价于a与b分别用m去除,余数相同。

    2. 同余定理

    (1)定义

    给定一个正整数m,如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)。

    (2)性质

    1. 反身性:a≡a (mod m);
    2. 对称性:若a≡b(mod m),则b≡a (mod m);
    3. 传递性:若a≡b(mod m),b≡c(mod m),则a≡c(mod m);
    4. 同余式相加减:若a≡b(mod m),c≡d(mod m),则a±pmc≡b±pmd(mod m);
    5. 同余式相乘:若a≡b(mod m),c≡d(mod m),则a*c≡b*d(mod m)。
    6. 同余式数乘:若a≡b(mod m),则ak≡bk(mod m),k为任意整数。
    7. 除法:若 a*c≡b*c(mod m) ,c =cancel{=} 0,则a≡b( mod m/(gcd(c,m)) ) ,其中gcd(c,m)表示c和m的最大公约数,
      特殊地,gcd(c,m)=1,则 a≡b(mod m) ;
    8. 幂运算:如果a≡b(mod m) ,那么 ana^nbnb^n(mod m) ;
    9. 若 a≡b(mod m) ,n=m,则 a≡b(mod n) ;
    10. 若 a≡b(mod mim_i) ,(i=1,2…n) 则 a≡b(mod [m1,m2,,mnm_1,m_2,…,m_n]) ,其中 [m1,m2,,mnm_1,m_2,…,m_n] 表示m1,m2,…mn的最小公倍数。
    11. 若 a≡b(mod m) ,k为正整数,则 ka≡kb(mod km) ;
      d为a,b,m的任一公约数,则adbd(mod md)frac{a}{d}≡frac{b}{d}(modspace frac{m}{d})
    12. 设d>=1,d|m,若 a≡b(mod m) ,则 a≡b(mod d) ;
    13. 若 a≡b(mod m),则 (a,m)≡(b,m) ;
    14. 如果 a mod b = c ,则有(a+kb) mod b =c(k为非0整数)
    15. 如果 a mod b = c ,则有(ka) mod b =(kc) mod b (k为正整数)
    16. (a+b) mod c =((a mod c)+(b mod c )) mod c;
    17. (ab) mod c=((a mod c)(b mod c)) mod c

    3. 欧拉函数

    (1)定义

    φ(n)是欧拉函数(Euler’s totient function),设n是正整数,φ(n)表示{0,1,…,n-1}中与n互素的数的个数。例如φ(12)=4,因为与12互素的数有1,5,7,11。这里认为φ(1)=1。

    (2)公式

    φ(n)=n(11p1)(11p2)(11pk)φ(n)=n(1-frac{1}{p_1})(1-frac{1}{p_2})…(1-frac{1}{p_k})
    其中p1, p2……pn为n的所有质因数,n是不为0的整数。

    (3)性质

    1. 对于质数n,φ(n)=n-1

    2. 对于质数p,若n=pkn=p^kφ(n)=pkpk1=(p1)pk1φ(n)=p^k-p^{k-1}=(p-1)p^{k-1}

    3. 【积性函数】:
      若m,n互质,φ(mn)=φ(m)φ(n)

    4. 【计算式】:
      对于质数p,若n=piki=p1k1p2k2p3k3pnknn=prod p_i^{k_i}=p_1^{k_1}*p_2^{k_2}*p_3^{k_3}*…*p_n^{k_n}
      φ(n)=n(11pi)=n(11p1)(11p2)(11pk)φ(n)=n*prod(1-frac{1}{p_i})=n(1-frac{1}{p_1})(1-frac{1}{p_2})…(1-frac{1}{p_k})

    5. 【欧拉定理】:
      对于互质的a,n,有aφ(n)1(mod n)a^{φ(n)} ≡ 1 (modspace n)

    6. 小于n且与n互质的数的和:S=φ(n)n2S=φ(n) * frac{n}{2},(n>1)

    7. 对于质数p,
      若n mod p=0,则φ(n∗p)=φ(n)∗p
      若n mod p≠0,则φ(n∗p)=φ(n)∗(p−1)

    8. n=dnφ(d)n=sum _{d∣n}φ(d),即n的因数(包括1和它自己)的欧拉函数之和等于n

    (5)计算单个欧拉函数

    int oula(int n)
    {
        int rea=n;
        for(int i=2; i*i<=n; i++)
            if(n%i==0)//第一次找到的必为素因子
            {
                rea=rea-rea/i;
                do
                    n/=i;//把该素因子全部约掉
                while(n%i==0);
            }
        if(n>1)
            rea=rea-rea/n;
        return rea;
    }
    

    (6) 欧拉函数打表O(NlogN)

    说明:
    定义:欧拉函数phi(n),表示小于或等于n的数中与n互质的数的数目。
    欧拉函数求值的方法是:
    (1)phi(1)=1
    (2)若n是素数p的k次幂,phi(n)=pkpk1=(p1)pk1phi(n)=p^k-p^{k-1}=(p-1)p^{k-1}
    (3)若m,n互质,phi(mn)=phi(m)phi(n)
    根据欧拉函数的定义,可以推出欧拉函数的递推式:
    令p为N的最小质因数,若p2N,phi(N)=phi(Np)×pp^2|N,phi(N)=phi(frac{N}{p}) imes p;否则phi(N)=phi(Np)×(p1)phi(N)=phi(frac{N}{p}) imes (p-1)

    接口:
    void genPhi();
    复杂度:O(NlogN)
    输出:phi全局变量,存储了1~max中每个数的欧拉函数。

    代码:

    const int max = 111111;
    
    int minDiv[max],phi[max],sum[max];
    
    void genPhi()
    {
    	for(int i=1;i<max;++i)
    		minDiv[i] = i;
    		
    	for(int i=2;i*i<max;++i)
    	{
    		if( minDiv[i]==i )
    			for(int j=i*i;j<max;j+=i)
    				minDiv[j] = i;
    	}
    	phi[1] = 1;
    	for(int i=2;i<max;++i)
    	{
    		phi[i] = phi[i/minDiv[i]];
    		if( (i/minDiv[i]%minDiv[i]==0 )
    			phi[i] *= minDiv[i];
    		else
    			phi[i] *= minDiv[i]-1;
    	}
    }
    

    4. 完全余数集合

    定义小于 n 且和 n 互质的数构成的集合为 Z(n) ,称呼这个集合为 n 的完全余数集合。 显然 |Z(n)| =φ(n) 。

    5. 算术基本定理

    任何一个大于1的自然数 N ,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N=P1a1P2a2P3a3PnanN=P_1^{a_1}*P_2^{a_2}*P_3^{a_3}*…*P_n^{a_n},这里 P1&lt;P2&lt;P3&lt;&lt;PnP_1&lt;P_2&lt;P_3&lt;……&lt;P_n 均为质数,其诸指数 aia_i 是正整数。
    这样的分解称为 N 的标准分解式。

  • 相关阅读:
    学习ESLint的规则配置,ESLint语法检测配置说明
    慎用Request.Params获取参数值
    [C#.NET 拾遗补漏]04:你必须知道的反射
    .NET Web应用中为什么要使用async/await异步编程
    Asp.Net Core Web Api 使用 Swagger 生成 api 说明文档
    网页打印尺寸设置
    Object 标签遮挡 Div 显示
    C# 之 批量插入数据到 SQLServer 中
    PrintDocument打印、预览、打印机设置和打印属性的方法
    JS 之 阻止事件冒泡,阻止默认事件,event.stopPropagation()和event.preventDefault(),return false的区别
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626067.html
Copyright © 2011-2022 走看看