zoukankan      html  css  js  c++  java
  • 欧拉函数&&欧拉定理

    定义和简单性质

    欧拉函数在OI中是个非常重要的东西,不知道的话会吃大亏的.

    欧拉函数用希腊字母φ表示,φ(N)表示N的欧拉函数.

    对φ(N)的值,我们可以通俗地理解为小于N且与N互质的数的个数(包含1).

    欧拉函数的一些性质:

    1.对于素数p, φ(p)=p-1,对于对两个素数p,q φ(pq)=pq-1

    欧拉函数是积性函数,但不是完全积性函数.

    2.对于一个正整数N的素数幂分解N=P1^q1*P2^q2*...*Pn^qn.

     

       φ(N)=N*(1-1/P1)*(1-1/P2)*...*(1-1/Pn).

     

    3.除了N=2,φ(N)都是偶数.

     

    4.设N为正整数,∑φ(d)=N (d|N).

     

    根据性质2,我们可以在O(sqrt(n))的时间内求出一个数的欧拉函数值.

     

    如果我们要求1000000以内所有数的欧拉函数,怎么办.

    上面的方法复杂度将高达O(N*sqrt(N)).

    我们来看看线性筛法的程序:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int euler[100];
    int Max = 100;
    void Init(){     
         euler[1]=1;    
         for(int i=2;i<Max;i++)    
           euler[i] = i;    
         for(int i = 2;i < Max;i++)    
            if(euler[i] == i)    
                for(int j = i;j < Max;j += i)  //注意,j += i
                   euler[j] = euler[j] / i * (i - 1);//先进行除法是为了防止中间数据的溢出     
    }
    int main()
    {
        int a; 
        cin>>a;
        Init();
        cout<<euler[a];
        return 0;
    }

     

    妙啊!!!!!!!!!!!

     

    欧拉函数φ

         欧拉定理是用来阐述素数模下,指数同余的性质。

         欧拉定理:对于正整数N,代表小于等于N的与N互质的数的个数,记作φ(N)

         例如φ(8)=4,因为与8互质且小于等于8的正整数有4个,它们是:1,3,5,7

        欧拉定理还有几个引理,具体如下:

        ①:如果n为某一个素数p,则φ(p)=p-1;

        ①很好证明:因为素数p的质因数只有1和它本身,p和p不为互质,所以φ(p)=p-1;

     

        ②:如果n为某一个素数p的幂次,那么φ(p^a)=(p-1)*p^(a-1);

        ②因为比p^a小的数有p^a-1个,那么有p^(a-1)-1个数能被p所整除(因为把1~p^a-1的p的倍数都筛去了)

           所以φ(p)=p^a-1-(p^(a-1)-1)=(p-1)*p^(a-1)

     

        ③:如果n为任意两个数a和b的积,那么φ(a*b)=φ(a)*φ(b)

        ③因为比a*b小的数有a*b-1个,条件是a与b互质

           那么可以知道,只有那些既满足a与其互质且既满足b与其互质的数满足条件。

           根据乘法原理,这样的数可以互相组合,那么就有φ(a)*φ(b)个

           所以可以得知φ(a*b)=φ(a)*φ(b) (注意条件必须满足a和b互质)

     

       ④:设n=(p1^a1)*(p2^a2)*……*(pk^ak) (为N的分解式)

             那么φ(n)=n*(1-1/p1)*(1-1/p2)*……*(1-1/pk)

       ④因为各个分解完的p1、p2、……pk均为素数,所以它们均为互质的

          每次再刨去它们本身,乘起来

          剩下的运用容斥原理,再根据引理②和引理③就可以得出

      其实欧拉定理是费马小定理的推论。。。

        欧拉定理:a^(φ(m))同余1(mod m) (a与m互质)

    费马小定理是数论中的一个定理。其内容为假如a是一个整数,p是一个质数的话,那么:

      ap = a(mod p)

      假如a不是p的倍数的话,那么这个定理也可以写成:

      ap − 1 = 1(mod p)


     

  • 相关阅读:
    1105 Spiral Matrix (25分)(蛇形填数)
    1104 Sum of Number Segments (20分)(long double)
    1026 Table Tennis (30分)(模拟)
    1091 Acute Stroke (30分)(bfs,连通块个数统计)
    1095 Cars on Campus (30分)(排序)
    1098 Insertion or Heap Sort (25分)(堆排序和插入排序)
    堆以及堆排序详解
    1089 Insert or Merge (25分)
    1088 Rational Arithmetic (20分)(模拟)
    1086 Tree Traversals Again (25分)(树的重构与遍历)
  • 原文地址:https://www.cnblogs.com/DukeLv/p/8407290.html
Copyright © 2011-2022 走看看