欧拉函数
来源:互联网 发布:程序员考试时间 编辑:程序博客网 时间:2024/06/05 09:58
一个数的欧拉函数是指不超过这个数且与此数互质的正整数的个数。
1、如果n是质数,则φ(n) = n - 1
2、如果n为两个互质的数a,b的乘积,则φ(a*b) = φ(a) * φ(b)
与a*b互质的数,只能是既与a互质(有φ(a)个),又与b互质(有φ(b)个),所以一共有φ(a) * φ(b)个
3、如果n为某一个质数p的幂次p^a,则φ(p^a) = (p-1)*p^(a-1)
在[1,p^a-1]范围内能被p整除的数一共有p^(a-1)-1个数,区间总数是p^a-1个,所以φ(p^a) = p^a-p^(a-1) = (p-1)*p^(a-1)
那么对于任意数求它的欧拉函数。
n = p1^k1 * p2^k2 * p3^k3*....*pn^kn
φ(n) = φ(p1^k1) * φ(p2^k2)*...*φ(pn^kn)
= (p1-1)*p1^(k1-1)*(p2-1)*p2^(k2-1)*....
= p1^k1 * p2^k2 * p3^k3*....*pn^kn * (1-1/p1)*(1-1/p2)*...*(1-1/pn)
= n * (1-1/p1)*(1-1/p2)*...*(1-1/pn)
1、单个欧拉函数的计算 POJ 2407
Phi(n) = ∏(pi-1) * pi^(a-1)
求出每一个质因子和幂次,由公式计算得到。
LL cal( LL x ){ LL ans = 1; for( int i = 2; i*i <= x; i++ ) { if ( x % i == 0) //找到一个质因子 { ans*=i-1; x /= i; while( x % i == 0 ) { ans *= i; x /= i; } } } if ( x > 1 ) ans*=(x-1); return ans;}
2、欧拉函数线性筛( NlogN ) POJ 3090
找到n的最小质因数k phi( p ^a ) = (p-1)* p^( a - 1 )
如果n只能整除k,phi(n) = phi( n/k )*(k-1)
否则 phi(n) = phi(n/k)*k
void getphi(int n){ rep(i,1,n) mindiv[i] = i; //记录i的最小质因数 for(int i = 2; i*i <= n; i++) if ( mindiv[i] == i ) { for(int j = i*i; j <= n; j+=i) mindiv[j] = i; } phi[1] = 1; rep(i,2,n) { phi[i] = phi[i/mindiv[i]]; if ( ( i / mindiv[i] ) % mindiv[i] == 0 ) phi[i] *= mindiv[i]; //还可以再除 else phi[i] *= ( mindiv[i] - 1 ); }}
3、欧拉筛O(N)
int prime[maxn/5];int f[maxn];bool isprime[maxn];void init(){int count = 0;Clean(isprime,true);for( int i = 2; i <= 5000000; i++ ){if ( isprime[i] ){prime[++count] = i;f[i] = i - 1;}for( int j = 1; j <= count; j++ ){if ( i * prime[j] > maxn-5 ) break;isprime[ i * prime[j] ] = false;if ( i % prime[j] )f[ i * prime[j] ] = (prime[j]-1) * f[i];else{f[ i * prime[j] ] = (prime[j]) * f[i];break;}}}}
- 欧拉函数
- 欧拉函数
- Relatives 【欧拉函数】
- 欧拉函数
- POJ_2407_欧拉函数
- 欧拉函数
- hdu_3501_欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数
- 欧拉函数应用
- 欧拉函数
- 欧拉函数
- 欧拉函数
- ACM-欧拉函数
- 电赛准备
- zookeeper安装与配置
- 背包系列第四篇----完全背包(求解最大价值)
- 设计模式(四)代理模式
- Maven依赖排除 禁止依赖传递 取消依赖的方法 去除jar包中的不想要的依赖关系
- 欧拉函数
- Css简介
- linux基础之 创建一个UDP socket
- unity5.3.3 no pc,mac&linux standalone
- cf273C. Primes on Interval【二分】
- Java 设计模式- 外观模式
- 恋恋加密算法解析
- TimesTen访问Oracle的口令存在哪里(ttCacheUidPwdSet还是OraclePWD)
- untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_3_Shader的数据接口:属性和 uniform变量