欧拉函数

定义

欧拉函数是小于n的正整数中与n互质的数的数目。它又称为Euler’s totient function、φ函数、欧拉商数。 例如φ(8)=4,因为1,3,5,7均和8互质。

性质

性质一

对于一个质数n, φ(n)=n1

证明:因为质数n与1~n-1都是互质。

性质二

若p是质数, n=pk ,则 φ(n)=pkpk1=(p1)pk1=(11p)pk

证明:
因为除了p的倍数外,其他数都跟n互质。其中1~ pk 之间有 pk1 个,因为p的倍数有p,2p,3p…,( pk12 )p,( pk11 )p,( pk1 )p.

性质三

gcd(n,m)=1 时, φ(nm)=φ(n)φ(m)
证明:
φ(n) 是积性函数。
下面证明引用了《数论概要》的第11章的证明

我们找到一个包含 φ(mn) 个元素的集合,再找一个包含
φ(m)φ(n) 个元素的第二个集合,然后证明这两个>集合包含个数相同的元素.
第一个集合是{a : 1amn,gcd(a,mn)=1
显然,这个集合包含 φ(mn) 个元素,因为这正好是 φ 的定义。
第二个集合是 (b,c):1bm,gcd(b,m)=1,1cn,gcd(c,n)=1 .
那么有多少个序对(b,c)呢?正好对b有 φ(m) 个选择,因为这是 φ(m) 的定义,对c有 φ(n) 个选择,因为这是 φ(n) 的定义.所以对于第一个坐标b有 φ(m) 个选择,对第二个坐标c有 φ(n) 个选择,从而对序对(b,c)总共有 φ(m)φ(n) 个选择。
(1)在第一个集合取 a1,a2 使得
a1a2 (mod m)与 a1a2 (mod n)
所以 a1a2 被m与n整除,然而m与n互素,所以 a1a2 一定被mn整除,所以 a1a2 (mod mn),也就是说 a1 a2 是同一个数。
(2)利用中国剩余定理可以证得对于第二个集合的数,有且仅有一个a对应 ab (mod m), ac (mod n)
由(1)(2)可证得第一个和第二个集合是一一对应,也就是说 φ(mn)=φ(m)φ(n) ,得证。

性质四

n=pk11pk22...pkmm,φ(n)=n(11p1)(11p2)...(11pm)

证明:
根据性质二 、性质三可得,
φ(n)=φ(pk11)φ(pk22)...φ(pkmm)
=(11p1)pk11(11p2)pk22...(11pm)pkmm
=pk11pk22...pkmm(11p1)(11p2)...(11pm)
=n(11p1)(11p2)...(11pm)

性质五

对于互质的整数a,m有 aφ(m)1 (mod m)。

性质六

设小于n的所有与n互质的数的和为sum,则sum = n * φ(n)2

证明:
首先证明:如果gcd(n,i) = 1 则gcd(n,n-i) = 1
反证法:如果存在k 1 使得gcd(n , n- i) = k,则
(n - i) mod k = 0 , n mod k = 0;
可得 i mod k = 0, 即gcd(n,i) = k,
也就是说如果gcd(n,i) = 1 ,那么gcd(n, n-i)就不能大于1.
那么就可以知道与n互质的数是成对存在的,并且和为n,那么可得sum = n * φ(n)2

代码

//直接求解欧拉函数    
int euler(int n){ //返回euler(n)     
     int res=n,a=n;    
     for(int i=2;i*i<=a;i++){    
         if(a%i==0){    
             res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出     
             while(a%i==0) a/=i;    
         }    
     }    
     if(a>1) res=res/a*(a-1);    
     return res;    
}    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值