欧拉函数学习笔记

定义:对于正整数 n n n,欧拉函数是小于等于 n n n的数中与 n n n互质的数的个数。

符号: φ ( n ) φ(n) φ(n)表示 n n n的欧拉函数,默认 φ ( 1 ) = 1 φ(1)=1 φ(1)=1

一些定理:

1.对于一个素数 p p p φ ( p ) = p − 1 φ(p)=p-1 φ(p)=p1

证明略。

2.对于两个互质的数 a , b a,b a,b φ ( a × b ) = φ ( a ) × φ ( b ) φ(a \times b)=φ(a) \times φ(b) φ(a×b)=φ(a)×φ(b) ( ( (感谢 h y j hyj hyj 巨佬的指正 ) ) )

证明:因为 a a a b b b互质,所以 a a a b b b没有共同的质因数。设 a a a k a k_a ka个质因数, b b b k b k_b kb个质因数,因此:
φ ( a ) ∗ φ ( b ) = a ∗ ∏ i = 1 k a ( 1 − 1 p [ i ] ) ∗ b ∗ ∏ i = 1 k b ( 1 − 1 p [ i ] ) = a ∗ b ∗ ∏ i = 1 k a + k b ( 1 − 1 p [ i ] ) = φ ( a ∗ b ) \begin{aligned}φ(a)*φ(b)&=a*\prod\limits_{i=1}^{k_a} \left(1-\dfrac{1}{p[i]}\right)*b*\prod\limits_{i=1}^{k_b} \left(1-\dfrac{1}{p[i]}\right)\\&=a*b*\prod\limits_{i=1}^{k_a+k_b} \left(1-\dfrac{1}{p[i]}\right)\\&=φ(a*b)\end{aligned} φ(a)φ(b)=ai=1ka(1p[i]1)bi=1kb(1p[i]1)=abi=1ka+kb(1p[i]1)=φ(ab)
注:欧拉函数是积性函数,但不是完全积性函数。

u p d a t e update update:这个证法貌似是错的,因为要用到欧拉函数的公式,但是欧拉函数的公式又要由这个式子推出来。所以只能显然正确了。真的证明我还不会 ( ( (我菜爆了 ) ) ),可以参考这里

3.对于一个素数 p p p的幂次,如 p a p^{a} pa,有 φ ( p a ) φ(p^{a}) φ(pa) = = = ( p − 1 ) (p-1) (p1) × \times × p a − 1 p^{a-1} pa1

证明:比 p a p^{a} pa小的正整数共 p a − 1 p^{a}-1 pa1个。其中所有 p p p的倍数可以表示成 p p p × \times × t t t ( t = 1 , 2...... p a − 1 − 1 ) (t=1,2......p^{a-1}-1) (t=1,2......pa11),即共有 p a − 1 − 1 p^{a-1}-1 pa11个数能被 p p p整除。因为 p p p是质数,所以显然只有这些数不能被 p p p整除,剩余的数都与 p p p互质。因此, φ ( p a ) φ(p^{a}) φ(pa) = = = p a − 1 p^{a}-1 pa1 − - ( p a − 1 − 1 ) (p^{a-1}-1) (pa11) = = = ( p − 1 ) (p-1) (p1) × \times × p a − 1 p^{a-1} pa1

4.如果 i % p = 0 i\%p=0 i%p=0,那么 φ ( i × p ) = φ ( i ) × p φ(i\times p)=φ(i)\times p φ(i×p)=φ(i)×p

证明:懒了不想写,好像没多大用。

求欧拉函数:

1.求单个欧拉函数: φ ( x ) φ(x) φ(x) = x =x =x × \times × ∏ i = 1 k ( 1 − 1 p [ i ] ) \prod\limits_{i=1}^k \left(1-\dfrac{1}{p[i]}\right) i=1k(1p[i]1)

其中 p [ 1 ] , p [ 2 ] . . . . . . p [ k ] p[1],p[2]......p[k] p[1],p[2]......p[k] x x x的所有质因子

证明:首先,由整数的唯一分解定理可得, x x x = = = p [ 1 ] a 1 p[1]^{a_1} p[1]a1 × \times × p [ 2 ] a 2 p[2]^{a_2} p[2]a2 × \times × . . . . . . ...... ...... × \times × p [ k ] a k p[k]^{a_k} p[k]ak。显然 p [ 1 ] a 1 p[1]^{a_1} p[1]a1 p [ 2 ] a 2 p[2]^{a_2} p[2]a2 . . . . . . ...... ...... p [ k ] a k p[k]^{a_k} p[k]ak之间两两互质。那么,根据定理 2 , 3 2,3 2,3
φ ( x ) = φ ( p [ 1 ] a 1 ) ∗ φ ( p [ 2 ] a 2 ) ∗ . . . . . . ∗ φ ( p [ k ] a k ) = ( p [ 1 ] a 1 ∗ ( 1 − 1 p [ 1 ] ) ) ∗ ( p [ 2 ] a 2 ∗ ( 1 − 1 p [ 2 ] ) ) ∗ . . . . . . ∗ ( p [ k ] a k ∗ ( 1 − 1 p [ k ] ) ) = ( p [ 1 ] a 1 ∗ p [ 2 ] a 2 ∗ . . . . . . ∗ p [ k ] a k ) ∗ ( 1 − 1 p [ 1 ] ) ∗ ( 1 − 1 p [ 2 ] ) ∗ . . . . . . ∗ ( 1 − 1 p [ k ] ) = x ∗ ∏ i = 1 k ( 1 − 1 p [ i ] ) \begin{aligned}φ(x)&=φ(p[1]^{a_1})*φ(p[2]^{a_2})*......*φ(p[k]^{a_k})\\&=(p[1]^{a_1}*(1-\frac{1}{p[1]}))*(p[2]^{a_2}*(1-\frac{1}{p[2]}))*......* (p[k]^{a_k}*(1-\frac{1}{p[k]}))\\&=(p[1]^{a_1}*p[2]^{a_2}*......*p[k]^{a_k})*(1-\frac{1}{p[1]})*(1-\frac{1}{p[2]})*......*(1-\frac{1}{p[k]})\\&=x*\prod\limits_{i=1}^k \left(1-\dfrac{1}{p[i]}\right)\end{aligned} φ(x)=φ(p[1]a1)φ(p[2]a2)......φ(p[k]ak)=(p[1]a1(1p[1]1))(p[2]a2(1p[2]1))......(p[k]ak(1p[k]1))=(p[1]a1p[2]a2......p[k]ak)(1p[1]1)(1p[2]1)......(1p[k]1)=xi=1k(1p[i]1)
代码:

inline int getphi(int x){
    int res=x;
    for(int i=2;i*i<=x;i++){
        if(x%i==0){
            res=res/i*(i-1);//通分公式大括号内内容即可
            while(x%i==0) x/=i; 
        }
    }
    if(x>1) res=res/x*(x-1);
    return res;
}

2.线性筛欧拉函数:方法类似于筛素数,其实并不难,在筛素数的同时进行筛欧拉函数。

用到上面的1,2,4定理。

代码:

for(int i=2;i<=n;i++){
    if(!v[i]){
        phi[i]=i-1;
        pr[++top]=i;
    }
    for(int j=1;j<=top&&i*pr[j]<=n;j++){
        v[i*pr[j]]=1;
        if(i%pr[j]==0){
            phi[i*pr[j]]=phi[i]*pr[j];
            break;
        }
        else phi[i*pr[j]]=phi[i]*phi[pr[j]];
    }
}

欧拉定理:若 g c d ( a , m ) = 1 ​ gcd(a,m)=1​ gcd(a,m)=1,那么 a φ ( m ) ​ a^{φ(m)}​ aφ(m) ≡ ​ \equiv​ 1 ( m o d m ) ​ 1 \pmod m​ 1(modm)

证明:找欧拉去

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值