欧拉函数

定义:

欧拉函数是小于$n$的正整数中与n互质的数的数目($varphi(1)=1$)。

通项公式:

$varphi (n)=nprod_{i=1}^k(1-frac{1}{p_i})$,其中$p_1,p_2...p_k$是$n$的所有素因子。

性质一:

若$n$为质数,则

$varphi (n)=varphi(2*n)$

证明:

因为$n$为质数,所以只有$n$的倍数与它不互质。

因为$varphi(n)=n-1$,$varphi(2*n)=2*n-n-1$($n$个偶数,$1$个$n$),所以$varphi (n)=varphi(2*n)$。

性质二:

若$n$为一个质数$p$的k次方$p^k$,则

$varphi (p^k)=p^k-p^{k-1}$

证明:

因为因为$p$为质数,所以只有$p$的倍数与它不互质。

从$1$到$p^k$一共有$p^{k-1}$个$p$的倍数,所以$varphi(p^k)=p^k-p^{k-1}=p^k(1-frac {1}{p})$。

性质三:

$varphi(n)$是一个积性函数.

当$m$,$n$互质时,

$varphi(nm)=varphi(n)*varphi(m)$

证明:

构造以下矩阵

egin{matrix}
1& 2& 3&...&m\ 
n+1&n+2 & n+3&...& n+m\ 
2*n+1&2*n+2&2*n+3&...&2*n+m\ 
.&.& . & . & .\ 
.&.& . & . & .\ 
.&.& . & . & .\ 
(n-1)*m+1& (n-1)*m+2 & (n-1)*m+3 & ... & n*m
end{matrix}

这个$n*m$的矩阵包括了$1$到$n*m$的所有整数。我们发现第一行有$varphi(m)$个与$m$互质的数。因为若一个数$i$与$m$互质,$k*m+i$也与$m$互质。所以之后的$(n-1)$行也是每一行都有$varphi(m)$个与m互质的数。

那么每一列是不是也是$varphi(n)$个呢?是的。我们可以证明这$n$个数$mod n$互不相同。

我们假设存在两个数$mod n$相等。设这两个数为$k1$,$k2$。

因为两个数$mod n$相等,所以$k1=m1*n+r$,$k2=m2*n+r$。

又因为

$k1=q1*m+s,$,$k2=q2*m+s$

所以

$q1*m+s-q2*m-s=m1*n+r-m2*n-r$

$(q1-q2)*m=(m1-m2)*n$

因为$m$与$n$互质,所以$(q1-q2)$是$n$的倍数。又因为$(q1-q2)$最大值是$n-1$,所以$(q1-q2)$不是$n$的倍数,与假设矛盾。故没有两个数$mod n$相等。

通过上面的结论,我们可以得出每一行有$varphi(n)$个与$n$互质的数。

所以整个矩阵中与$n$和$m$都互质的数有$varphi(n)*varphi(m)$个,即$varphi(n*m)$。证毕。

证明通项公式:

因为$n$的所有质因子互质,所以$varphi(n)=varphi(prod_{i=1}^{k}p_i^{c_i})$。其中$p_i$是$n$的所有质因子,$c_i$是$p_i$的指数。

根据性质二,

$varphi(n)=prod_{i=1}^{k} p_i^{c_i}varphi(1-{}frac{1}{p_i})$
$varphi(n)=nprod_{i=1}^{k}varphi(1-{}frac{1}{p_i})$

所以欧拉函数通项公式为

$varphi(n)=nprod_{i=1}^{k}varphi(1-{}frac{1}{p_i})$。

性质四:欧拉定理

对于任意互质的两个正整数$a$,$n$,有$a^{varphi(n)}equiv 1(mod n)$。

证明:将$1$到$n$中的每一个与$m$互质的数按照$mod n$的大小排序:$x_1$,$x_2$,$x_3...x_{varphi(n)}$。

设$m_i=a*x_i$

1.$m$中的数$(mod n)$不同余。

证明:

假设$m_i$与$m_j$同余且$m_i>m_j$

则$a*x_i=q_i*n+r$,$a*x_j=q_j*n+r$

所以$a*(x_i-x_j)=n*(q_i-q_j)$

因为$a$与$n$互质,所以$(x_i-x_j)$必定为$n$的倍数。

又因为$(x_i-x_j)<n$

所以与假设矛盾。故$m$中的数$(mod n)$不同余。

2.$m$中的数与$n$取模的结果与$n$互质。

证明:设余数与$n$有公因子$r$

则$a*x_i=qn+pr=r(frac{qn}{r}+p)$

因为$frac{qn}{r}+p$是整数,所以$a*x_i$含有因数$r$,这意味着$a*x_i$与$n$不互质。而这与上面的结论矛盾。故$m$中的数与$n$取模的结果与$n$一定互质。

由1,2,可知,$m$中的数经过重新排列,必定模$n$同余于$x$

也就是

$prod_{i=1}^{varphi(n)}m_i equiv prod_{i=1}^{varphi(n)}x_i (mod n)$

变形

$a^{varphi(n)}prod_{i=1}^{varphi(n)}x_i equiv prod_{i=1}^{varphi(n)}x_i (mod n)$

$(a^{varphi(n)}-1)*prod_{i=1}^{varphi(n)}x_i equiv 0 (mod n)$

所以

$(a^{varphi(n)}-1)*prod_{i=1}^{varphi(n)}x_i|n$

因为$x_i$与$n$互质,所以

$a^{varphi(n)}-1 equiv 0 (mod n)$

$a^{varphi(n)} equiv 1 (mod n)$

性质五:

对于正整数$n$,有

$sum_{i|n}varphi(i)=n$。

证明:

设$F(n)$等于$sum_{i|n}varphi(i)$

设$m$是与$n$互质的一个正整数。

所以$F(n)*F(m)=sum_{i|n}varphi(i)*sum_{i|m}varphi(i)$

因为当$n$,$m$互质时,$varphi(n*m)=varphi(n)*varphi(m)$

又因为$n$,$m$互质,所以$n$和$m$的因数两两互质。

所以$F(n)*F(m)=sum_{i|n}sum_{j|m}varphi(i*j)$

因为$sum_{i|n}sum_{j|m}varphi(i*j)$包括了$n*m$的所有因数。

所以$F(n)*F(m)=F(n*m)$

所以$F(n)$是积性的。

考虑$n$的所有质因子$p$

$F(p_i^{c_i})=sum_{k=1}^{c_i-1}varphi(p_i^k)$

$F(p_i^{c_i})=sum_{k=1}^{c_i-1}p_i^k-p_i^{k-1}+1$

$F(p_i^{c_i})=p_i^{c_i}$

设$n$有$m$个质因子

$F(n)=prod_{i=1}^{m}p_i^{c_i}$

$F(n)=n$

性质六:

对于一个大于$2$的正整数$n$,$varphi(n) equiv 0 (mod 2)$。

证明:

假设$m$与$n$互质,且$n>m$,则$gcd(n,m)=gcd(n,n-m)=1$,这表明与$n$互质的数是成对存在的。

性质7:

对于一个正整数$n$和一个素数$p$

如果$p|n$且$p^2|n$,则$varphi(n)=varphi(frac{n}{p})*p$

如果$p|n$且$p^2 ot | n$,则$varphi(n)=varphi(frac{n}{p})*(p-1)$

证明:

因为$p|n$且$p^2|n$,所以$n$与$frac{n}{p}$有相同的质因子。

所以


$frac{varphi(n)}{varphi(frac{n}{p})}=frac{nprod_{i=1}^{k}(1-frac{1}{p_i})}{ frac{n}{p}prod_{i=1}^{k}(1-frac{1}{p_i})}=frac{n}{frac{n}{p}}=p$


如果$p|n$且$p^2 ot | n$,说明$p$与$frac{n}{p}$互质,

所以

$varphi(p*frac{n}{p})=varphi(p)*varphi(frac{n}{p})=varphi(frac{n}{p})*(n-1)$

线性筛:

void work(int n)
{
    prime[1]=0;
    num[1]=1;
    int i,j;
    for(i=2;i<=n;i++)
    {
        if(!vis[i])
        {
            vis[i]=1;
            prime[++prime[0]]=i;
            num[i]=i-1;
            continue;
        }
        for(j=1;j<=prime[0]&&prime[j]*i<n;j++)
        {
            vis[prime[j]*i]=1;
            if(i%prime[j]==0)
            {
                num[i*prime[j]]=num[i]*prime[j];
                break;
            }
            num[prime[j]*i]=num[i]*(prime[j]-1);
        }
    }
}

 这是蒟蒻的第一篇数学博文,写的很丑请见谅。如果有错误的话,在评论里疯狂d我,我会fix的。

原文地址:https://www.cnblogs.com/handsome-wjc/p/11278935.html