学弟讲算法-数论-欧拉函数

本文介绍了欧拉函数的定义,即对于正整数n,φ(n)表示小于n并与n互质的正整数数量。通过公式n∏(1−pi1)计算φ(n),并举例说明。同时,文章探讨了欧拉函数的性质,包括欧拉定理和费马小定理,并提供了计算φ(n)的方法。此外,还讨论了小于n且与n互质的数的和S=n×2φ(n)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欧拉函数

定义

φ ( n ) \varphi(n) φ(n),对于一个正整数 n,小于 n 且和 n 互质的正整数(包括 1)的个数

φ ( n ) = n ∏ ( 1 − 1 p i ) \varphi(n) = n\prod (1-\frac{1}{p_i}) φ(n)=n(1pi1) 其中 p i p_i pi为 n 的所有质因数,n 是不为 0 的整数; φ ( 1 ) \varphi(1) φ(1)=1,唯一和 1 互质的数就是 1 本身.

  • 解释:
  • 对于 n 的一个质因数 p i p_i pi,在 n 以内 p i p_i pi的倍数均匀分布
  • n 以内有 1 p i \frac{1}{p_i} pi1个数是 p i p_i pi的倍数,则有 1 − 1 p i 1 - \frac{1}{p_i} 1pi1个数不是 p i p_i pi的倍数;
  • 同理,对于质因数 p j p_j pj,则有 1 − 1 p j 1 - \frac{1}{p_j} 1pj1个数不是 p j p_j pj的倍数,则有 ( 1 − 1 p i ) ( 1 − 1 p j ) (1 - \frac{1}{p_i})(1 - \frac{1}{p_j}) (1pi1)(1pj1)个数即不是 p i p_i pi,也不是 p j p_j pj的倍数
  • 最后有 n ∏ ( 1 − 1 p i ) n\prod (1-\frac{1}{p_i}) n(1pi1)个数与 n 互质
  • 例:

φ ( 10 ) = 10 ( 1 − 1 2 ) ( 1 − 1 5 ) \varphi(10) = 10(1 - \frac{1}{2})(1 - \frac{1}{5} ) φ(10)=10(121)(151) = 4; (1,3,7,9)

φ ( 30 ) = 30 ( 1 − 1 2 ) ( 1 − 1 3 ) ( 1 − 1 5 ) \varphi(30) = 30(1 - \frac{1}{2})(1 - \frac{1}{3} )(1 - \frac{1}{5} ) φ(30)=30(121)(131)(151) = 8;

φ ( 49 ) = 49 ( 1 − 1 7 ) \varphi(49)= 49(1 - \frac{1}{7} ) φ(49)=49(171) = 42;

程序

  • 单数求法
ll eular(ll n){
    ll ans = n;
    for(int i = 2; i*i <= n; ++i){
        if(n % i == 0){
            //对应欧拉函数的通式即 ans = ans(1- 1/i)
            ans -= ans/i;
            //为保证完全消除刚才得到的 i 因子,确保下一个得到的 i 是 n 的素因子.
            while(n % i == 0){
            	n /= i;
			}
        }
    }
    //为保证已经除完了 n 的所有的素因子;因为有可能还会出现一个未除的因子,若结尾出现 n>1,说明还剩一个素因子未除.
    if(n > 1){
    	ans -= ans/n;
	}
    return ans;
}
  • 欧拉打表
void phi(){
    p[1]=1;
    for(int i=2;i<maxn;i++){
        if(!p[i]){
        	for(int j=i;j<=maxn;j+=i){
                if(!p[j]){
                	p[j]=j;
				}
                p[j]=p[j]/i*(i-1);
            }
		}
    }
}

性质:

  • 若 p 是素数,则$\varphi(p) = p-1$

  • 对于任意两个素数 p,q,有 φ ( p q ) = p q − 1 \varphi( pq ) = pq - 1 φ(pq)=pq1

  • 对于正整数 n,若 n = p 1 q 1 + p 2 q 2 + ⋯ + p n q n n = p_1^{q_1} + p_2^{q_2} + \cdots + p_n^{q_n} n=p1q1+p2q2++pnqn p 1 p_1 p1 p 2 p_2 p2 ⋯ \cdots p n p_n pn 为 n 的所有素因子

    则有 φ ( n ) = n ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) ⋯ ( 1 − 1 p n ) \varphi(n) = n(1 - \frac{1}{p_1})(1 - \frac{1}{p_2})\cdots(1 - \frac{1}{p_n}) φ(n)=n(1p11)(1p21)(1pn1)

  • n = p k n = p^k n=pk (p 为质数) , 则有$\varphi(n) = (p-1)p^{k-1}$

  • 欧拉定理: 对于互质的 m,n,有 n φ ( m ) n^{\varphi(m)} nφ(m) ≡ 1 (mod m)

  • 费马小定理: 对于质数 p
    若 n mod m = 0 , 则 φ ( n × p ) = φ ( n ) × p \varphi(n \times p) = \varphi(n) \times p φ(n×p)=φ(n)×p
    若 n mod m ≠ \ne = 0 , 则 φ ( n × p ) = φ ( n ) × ( p − 1 ) \varphi(n \times p) = \varphi(n) \times (p-1) φ(n×p)=φ(n)×(p1)

  • 小于 n 且与 n 互质的数的和
    S = n × φ ( n ) 2 S = n \times \frac{\varphi(n)}{2} S=n×2φ(n)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值