• 初等数论初步


    初学数论

    学得十分肤浅

    判断质数

    for(i = 2;i * i <= n;i++)
        if(n % i == 0)
        {
        	able = 1;
        	break;
        }  
    

    判断1~n范围内的质数

    inline void sieve(int x)
    {
        int i,j;
        prime[1] = 1;
        for(i = 2;i * i <= x;i++)
            if(!prime[i])
                for(j = i * i;j <= x;j += i) prime[j] = 1;
    }
    

    然后学的是

    整数的唯一分解

    对于(forall)n

    可表示为n = (sum_{i = 1,p|n}^{m_i}) (p^{w_i}_i)

    //factorize
    for(i = 2;i * i <= n;i++)
        {
            if(!vis[i])
            {
                p[++k] = i;
                while(n % i == 0)
                    n /= i,w[k]++;
            }
        }
    if(n != 1) p[++k] = n,w[k]++;
    

    最小公倍数和最大公约数(gcd&&lcm)

    对于(forall) a,b(in) Z

    辗转相除法

    inline LL gcd(LL a,LL b)
    {
        if(a < b) exchange(a,b);
        if(b == 0) return a;
        return gcd(b,a % b);
    }
    

    还可以用整数的唯一分解来求

    (gcd(a,b) = sum^{max(m_a,m_b)}_{i=1}p_i^{min(w_{ai},w_{bi})})

    (lcm(a,b) = sum^{max(m_a,m_b)}_{i=1}p_i^{max(w_{ai},w_{bi})})

    (a * b = gcd(a,b) * lcm(a,b)) 有重要作用

    (forall)n的约数个数

    d(n) = (prod_{i=1}^m(w_i+1))

    乘法原理,+1指的指数取0

    (forall)n的约数之和

    s(n) = (prod_{i=1}^msum_{j=0}^{w_j}p_i^j)

    清晰易懂 不解释

    同余

    a (equiv) b(mod m)

    有性质
    1: a (equiv) b(mod m) (Rightarrow) b (equiv) a(mod m)

    2: a (equiv) b(mod m) , b (equiv) c(mod m)(Rightarrow) a (equiv) c(mod m)

    3: a (equiv) b(mod m) (Leftrightarrow) m|(a - b)

    4: a (equiv) b(mod m) , n|m 那么 a (equiv) b(mod n)

    欧拉函数

    在这里插入图片描述

    看看 这位帅哥叫欧拉(滑稽

    (phi(n)) 小于n的正整数中与n互质的数的数目

    (phi(n)) = n * (prod_{i=1}^m(1 - frac{1}{p_i}))

    计算(phi(n))

    inline int phi(int n)
    {
        int i,res = n;
        for(i = 2;i * i <= n;i++)
        {
            if(n % i == 0)
                res = res / i * (i - 1);
            while(n % i == 0) n /= i;
        }
        if(n > 1) res = res / n * (n - 1);
        return res;
    }
    

    计算(phi(i))(1<=i<=n)

    inline void sieve(int n)
    {
        phi[1] = 1;
        int i,j;
        for(i = 2;i <= n;i++)
        {
            if(!vis[i])
            {
                prime[++pn] = i;
                phi[i] = i - 1;
            }
            for(j = 1;j <= pn&&prime[j] * i <= n;j++)
            {
                vis[prime[j] * i] = 1;
                if(i % prime[j] == 0)
                {
                    phi[i * prime[j]] = phi[i] * prime[j];
                    //注释1
                    break;
                }
                phi[i * prime[j]] = phi[i] * (prime[j] - 1);
    			/*积性函数f(a*b) = f(a) * f(b)(gcd(a,b) = 1)
            	phi[prime[j] - 1] = prime[j] - 1(prime[j]为质数)
            	*/
            }
        }
    }
    

    注释1:phi[i * prime[j] = n * prime[j] * (prod_{i=1}^m(1 - frac{1}{p_i}))

    费马小定理

    若有质数p,gcd(p,a) = 1

    则有 (a^{p-1}) (equiv) 1(mod p)

    二次探测定理

    (x^2) (equiv) 1(mod p)

    当 p 为奇质数时

    (x_1 = 1)(x_2 = p - 1)

    威尔逊定理

    (p是质数Leftrightarrow (p - 1)! equiv -1(mod p))

  • 相关阅读:
    用java抓取网页信息!
    WPF之Binding对数据的转换(第五天)
    WPF读书笔记 x名称空间详解(第二天)
    WPF的UI布局(Layout)WPF读书笔记(第三天)
    WPF 数据绑定Bingding基础(第四天)
    WPF读书笔记(第一天)
    HelloWin程序(窗口与消息)
    django创建数据库表方法
    OpenSSH利用处理畸形长度密码造成的时间差,枚举系统用户(CVE20166210)
    ldap匿名访问测试脚本
  • 原文地址:https://www.cnblogs.com/resftlmuttmotw/p/11323227.html
Copyright © 2020-2023  润新知