欧拉函数性质及推导

互质

  • gcd(a,b) = 1a,b互质,
  • gcd(a,b,c) = 1 则两两互质
    gcd(a,b) = gcd(a,c) = gcd(b,c) = 1

欧拉函数

定义:[1,N)中与N互质数的个数被称为欧拉函数,记作 υ ( N ) \upsilon(N) υ(N)
由算数基本定理知: N = p 1 c 1 ∗ p 2 c 2 ∗ p 3 c 3 ∗ … … ∗ p i c i N = p_1^{c_1} * p_2^{c_2}*p_3^{c_3}*……*p_i^{c_i} N=p1c1p2c2p3c3pici

  1. 先推倒i=2 c1=1 c2=1的情况,
    质因子为p,q,1~N中除去p的倍数, p,2p,3p,....,[n/p]*p, 那么1~N中有N/pp的倍数, 同理q也有N/qq的倍数,那么 υ ( N ) = N − N / q − N / p \upsilon(N)=N-N/q-N/p υ(N)=NN/qN/p,

    此时我们忽略了p,q同时被除去的倍数(应该是根据容斥定理),例如2*3 3*2被计算2次,那么加上N/(p*q)个被减去2次的数的个数 就是所求的欧拉函数,(p*q)p,q的最小公倍数,p,q的倍数一定是p*q的倍数,所以除以p*q

    所以 υ ( N ) = N − N / p − N / q + N / ( p ∗ q ) \upsilon(N)=N-N/p-N/q+N/(p*q) υ(N)=NN/pN/q+N/(pq)
    υ ( N ) = N ( 1 − 1 / q ) ( 1 − 1 / p ) \upsilon(N)=N(1-1/q)(1-1/p) υ(N)=N(11/q)(11/p)

  2. 放在N的全部质因子上的 欧拉函数 就为
    υ ( N ) = N ( 1 − 1 / p 1 ) ( 1 − 1 / p 2 ) . . . ( 1 − 1 / p i ) \upsilon(N)=N(1-1/p_1)(1-1/p_2)...(1-1/p_i) υ(N)=N(11/p1)(11/p2)...(11/pi)

//试除法分解质因数来求 欧拉函数值
#include 
#include 
using namespace std;
int main() {
	int n;
	cin >> n;
	int ans = n;
	for (int i=2; i<=sqrt(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);
	cout << ans; 
	return 0;
}

算数基本定理:
N = p 1 c 1 ∗ p 2 c 2 ∗ p 3 c 3 ∗ … … ∗ p i c i N = p_1^{c_1} * p_2^{c_2}*p_3^{c_3}*……*p_i^{c_i} N=p1c1p2c2p3c3pici ,其中p1,p2,..都是互质的
那么: υ ( a ∗ b ) = υ ( a ) ∗ υ ( b ) \upsilon(a*b) = \upsilon(a)*\upsilon(b) υ(ab)=υ(a)υ(b) (从欧拉函数推导过程i=2得来)

满足上述条件时, υ \upsilon υ 也叫积性函数

延伸出来的欧拉函数的2个性质:(如果dn的约数,记作d|n)

  1. p为质数,p|n p 2 ∣ n p^2|n p2n , 得 p ∣ ( n / p ) p|(n/p) p(n/p)
    带入欧拉函数然后得到 υ ( n ) = p ∗ υ ( n / p ) \upsilon(n) = p*\upsilon(n/p) υ(n)=pυ(n/p)
    υ ( n ) = n ∗ ( 1 − p 1 ) ( 1 − p 2 ) . . . \upsilon(n)=n*(1-p_1)(1-p_2)... υ(n)=n(1p1)(1p2)...
    υ ( n / p ) = n / p ∗ ( 1 − p 1 ) ( 1 − p 2 ) . . . \upsilon(n/p)=n/p*(1-p_1)(1-p_2)... υ(n/p)=n/p(1p1)(1p2)... ,然后相除
  2. p为质数,p|n p 2 ! ∣ n p^2 !|n p2!n ,( p 2 p^2 p2不是n的约数),此时pn/p互质,由基本性质得 υ ( n ) = υ ( n / p ) ∗ υ ( p ) \upsilon(n)=\upsilon(n/p)*\upsilon(p) υ(n)=υ(n/p)υ(p) 以为p是个质数,1~p都与它互质,则 υ ( p ) = p − 1 \upsilon(p)=p-1 υ(p)=p1 ,
    υ ( n ) = ( p − 1 ) ∗ υ ( n / p ) \upsilon(n)=(p-1)*\upsilon(n/p) υ(n)=(p1)υ(n/p)

你可能感兴趣的:(欧拉函数性质及推导)