一、欧拉函数定义:
对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1 )的个数,记作φ ( n ) 。
(互质理解:一个当分子,一个当分母,此分式不可化简)
二、欧拉函数通式:
φ(n)=n*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)……(1-1/pn)
其中p1, p2……pn为n的所有质因数,n是不为0的整数。
三、推导、结论:
1. φ( 1 )= 1
2. p 为质数,则 φ( p )= p - 1
3. p ,q 都为质数,则 φ( p * q )=( p - 1 )*( q - 1 )=φ( p )* φ( q )
4. p 为质数,则
(由此上结论可推出欧拉函数通式)
四、欧拉函数代码实现:
ll phi(ll n)//求 小于 n 且和 n 互质的正整数(包括 1 )的个数
{
ll ans = n;
for(int i = 2; i * i <= n; ++ i)
{
if(n % i == 0)
{
ans = ans / i * (i - 1);
while(n % i == 0)
n /= i;
}
}
if(n > 1) ans = ans / n * (n - 1);
return ans;
}