欧拉函数

Posted youxam

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欧拉函数相关的知识,希望对你有一定的参考价值。

欧拉函数: 小于或等于n的正整数中与n互质的数的数目

通式:(phi(n) = n Pi_{p_i}(1-frac 1 {p_i})) ((p_i)为小于或等于n的正整数中与n互质的数) , 特殊的,(phi(1)=1)

由通式可得, $phi(n)=(1-frac 1 {p_1}) cdot (1-frac 1 {p_2}) cdot dots cdot (1-frac 1 {p_{i-1}}) cdot (n-frac n {p_i}) $

int phi(int n){
	int ans=n;
	for(int i=2;i*i<=n;++i)
		if(n%i==0) { // 第一次遇到的可整除的必定为质因子
			ans-=ans/i; //依次乘每项
			while(n%i==0)n/=i; // 除完所有质因子, 保证第4行正确性
		}
	if(n!=1)ans-=ans/n; // 大于sqrt(n)的最多只有一个质因子
	return ans;
}

对于倒数第三行, 小于(sqrt n)的所有质因子相乘若小于(sqrt n), 那么有且只有一个大于(sqrt n)的质因子, 假设有两个, 相乘必定会大于(n).

以上是关于欧拉函数的主要内容,如果未能解决你的问题,请参考以下文章

欧拉Euler函数

HDU 2588 GCD(欧拉函数)

蓝桥杯必备算法一:欧拉函数

数论之旅4---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭)

欧拉函数性质与求法 [数论][欧拉函数]

欧拉筛欧拉函数