欧拉函数小结

遇到了一个欧拉函数的题,于是就四处搜刮资料,拼凑出这个博客。


1.函数内容

定义:在数论,对正整数n,欧拉函数是小于或等于n的数中与n互质的数的个数,记为 φ ( n ) \varphi(n) φ(n)。特别的, φ ( 1 ) = 1 \varphi(1)=1 φ(1)=1

通式 φ ( n ) = n ∏ i = 1 k ( 1 − 1 p i ) , p 1 , p 2 , . . . , p k 是 n 的 所 有 质 因 数 \varphi(n)=n\prod_{i=1}^k(1-\frac1{p_i})\quad,p_1,p_2,...,p_k是n的所有质因数 φ(n)=ni=1k(1pi1),p1,p2,...,pkn

2.编程实现

①求 φ ( x ) \varphi(x) φ(x)

int euler(int n)
{
    int t=n, sn=sqrt(n+1);
    for(int i=2; i<=sn; ++i)
    {
        if(n%i==0)
        {
            t=t/i*(i-1);
            while(n%i==0) n/=i;
        }
        if(n==1) break;
    }
    if(n>1) t=t/n*(n-1);
    return t;
}

②求 φ ( 1 ) \varphi(1) φ(1)~ φ ( n ) \varphi(n) φ(n)

void euler(int n)
{
    e[1]=1;
    for(int i=2; i<=n; ++i)
    {
        if(!e[i])///i is a prime
        {
            for(int j=i; j<=n; j+=i)
            {
                if(!e[j]) e[j]=j;
                e[j]=e[j]/i*(i-1);
            }
        }
    }
    return;
}

③线性求1~n的所有素数和 φ ( 1 ) \varphi(1) φ(1)~ φ ( n ) \varphi(n) φ(n)
下面用到的一些公式会在“相关性质”中说明。

void Euler(int n)
{
    notprime[1]=true;
    e[1]=1;

    for(int i=2; i<=n; ++i)
    {
        if(!notprime[i])
        {
            prime[pn++]=i;
            e[i]=i-1;
        }
        for(int j=0; j<pn&&prime[j]*1ll*i<=n; ++j)
        {
            notprime[prime[j]*i]=true;
            if(i%prime[j]==0)
            {
                e[prime[j]*i]=e[i]*prime[j];
                break;
            }else
            {
                e[prime[j]*i]=e[i]*(prime[j]-1);
            }
        }
    }
    return;
}

以上代码可用百度百科“欧拉函数”词条中的欧拉函数表验证。

3.相关性质

  • m 、 n 互 质 → φ ( m × n ) = φ ( m ) × φ ( n ) m、n互质\to \varphi(m \times n)=\varphi(m)\times \varphi(n) mnφ(m×n)=φ(m)×φ(n)
  • i m o d p = 0 → φ ( i × p ) = φ ( i ) × p i \quad mod \quad p=0\to\varphi(i \times p)=\varphi(i) \times p imodp=0φ(i×p)=φ(i)×p
  • i m o d p = 0 且 i p m o d p ! = 0 且 p 为 质 数 → φ ( i ) = φ ( i p ) × ( p − 1 ) i \quad mod \quad p=0 且 \frac ip \quad mod \quad p!=0且 p为质数 \to \varphi(i)=\varphi(\frac ip) \times (p-1) imodp=0pimodp!=0pφ(i)=φ(pi)×(p1)
  • 欧拉定理: x 与 p 互 质 → x φ ( p ) = 1 ( m o d p ) x与p互质\to x^{\varphi(p)}=1(mod \quad p) xpxφ(p)=1(modp)
    费马小定理: p 为 质 数 → x p − 2 = 1 ( m o d p ) p为质数 \to x^{p-2}=1(mod\quad p) pxp2=1(modp)
  • n 为 奇 数 → φ ( n × 2 ) = φ ( n ) × 2 n为奇数\to \varphi(n \times 2)=\varphi(n)\times 2 nφ(n×2)=φ(n)×2
  • 小于p且与p互质的数之和为 φ ( p ) ∗ p 2 \frac{\varphi(p)*p}2 2φ(p)p,因为若x与p互质,则p-x也与p互质

2020.1.31


资料来源:
[1]百度百科“欧拉函数”
[2]数论基础——欧拉函数.csdn博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值