欧拉函数
2016-09-03 16:43
190 查看
欧拉函数求的是小于等于n的正整数中与n互质的数的个数。
例如φ(8)=4,因为1,3,5,7均和8互质。
通式:
euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn)
其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。
注意:每种质因数只一个。 比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4
若n是质数p的k次幂,
,因为除了p的倍数外,其他数都跟n互质。
设n为正整数,以 φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值
φ:N→N,n→φ(n)称为欧拉函数。
欧拉函数是积性函数——若m,n互质φ(mn)=φ(m)φ(n)
特殊性质:当n为奇数时,φ(2n)=φ(n), 证明与上述类似。
若n为质数则φ(n)=n-1
上代码:
例如φ(8)=4,因为1,3,5,7均和8互质。
通式:
euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn)
其中p1, p2……pn为x的所有质因数,x是不为0的整数。
φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。
注意:每种质因数只一个。 比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4
若n是质数p的k次幂,
,因为除了p的倍数外,其他数都跟n互质。
设n为正整数,以 φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值
φ:N→N,n→φ(n)称为欧拉函数。
欧拉函数是积性函数——若m,n互质φ(mn)=φ(m)φ(n)
特殊性质:当n为奇数时,φ(2n)=φ(n), 证明与上述类似。
若n为质数则φ(n)=n-1
上代码:
#include<cstdio> using namespace std; int Euler(int n){ int res=n,i; for(i=2;i*i<=n;i++) if(n%i==0){ n/=i; res=res-res/i; while(n%i==0) n/=i; } if(n>1) res=res-res/n; return res; } int main(){ int n; scanf("%d",&n); printf("%d",Euler(n)); return 0; }
相关文章推荐
- 欧拉函数/欧拉定理
- HDU 1787 GCD Again (欧拉函数)
- HDU 5728 PowMod 欧拉函数 递归
- bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数
- *HDU 1286,2824欧拉函数
- 欧拉函数
- HDU 2824 欧拉函数筛法
- hdu 2588 GCD [欧拉函数]【数论】*
- POJ 3090 Visible Lattice Points (欧拉函数)
- bzoj2186(欧拉函数+逆元)
- POJ 2478 Farey Sequence 欧拉函数
- TOJ 3313.Calculation(欧拉函数、费马定理)
- 51nod-1136 欧拉函数
- 欧拉函数
- UVa10820 Send a Table[欧拉函数]
- 欧拉函数
- 欧拉函数
- 拿不定主意的东东(欧拉函数)
- 洛谷 2158 数论 打表 欧拉函数
- 欧拉函数