欧拉定理

只是简单说明一下。

欧拉函数 $\varphi(x)$

定义 

设n为正整数,则1,2,...,n中与n互素的整数的个数记作$\varphi(x)$,叫做欧拉函数。

性质(我认为比较有用的几个)

  • 设p为素数,则$\varphi(x)=p-1$. 
  • 设整数n有标准分解式$p_1^{\alpha_1}p_2^{\alpha_2}...p_k^{\alpha_k}$,则

                      $\varphi(n)=n\prod ^k_{i=1}(1-\frac{1}{p_i})=n(1-\frac{1}{p_1})(1-\frac{1}{p_2})...(1-\frac{1}{p_k})$

  • 设正整数m、n互素,则$\varphi(nm)=\varphi(n)\varphi(m)$。

欧拉定理

如果m和a是互素的正整数,则$a^{\varphi(m))}\equiv1(mod\ m)$。

证明 取$r_1,r_2,...,r_{phi(m)}$为模m的既约剩余系,故$ar_1,ar_2,...ar_{\phi(m)}$也是模m的既约剩余系。由于二者互为排列,因此有

    $r_1...r_{\varphi(m)}\equiv ar_1..ar_{\varphi(m)}=a^{\varphi(m)}r_1..r_{\varphi(m)} \ \ (mod\ m)$

求欧拉函数的代码(利用第二个性质)

 

 1 long long phi(long long n)
 2 {
 3     long long ret=n;
 4     for(int i=2;i*i<=n;i++)
 5     {
 6         if(n%i==0)
 7         {
 8             while(n%i==0)
 9             {
10                 ret-=ret/i;
11                 while(n%i==0)n/=i;
12             }
13         }
14     }
15     if(n>1)ret-=ret/n;
16     return ret;
17 }

 

posted @ 2019-05-03 21:49  liqgnonqfu  阅读(536)  评论(0编辑  收藏  举报