1. 程式人生 > 其它 >Vue路由的配置

Vue路由的配置

定義:\(\varphi(n)\) 表示 \(n\) 以內與 \(n\) 互質的數的個數。

有:

\[n=\sum_{d|n}\varphi(d) \]

\[\varphi({p_i}^{k_i})={p_i}^{k_i}-{p_i}^{k_i-1} \]

\[\varphi(n)=n\times \prod_{i=1}^s \frac{p-1}{p} \]

可以自己證一下,挺好玩的,若是不會可以看 OIWiKi

由於是積性函式,由:

  • \(\varphi(1)=1\)

  • \(\varphi(p)=p-1,p\in prime\)

  • \(\varphi(p^k)=\varphi(p^{k-1})\times p\)

  • \(\varphi(i)=\varphi(p)\times \varphi(\frac{i}{p})\),其中 \(p\)\(i\) 的最小質因子。

也就是說,只有在處理 \(\varphi(p^k)\) 這一項上和莫比烏斯函式不同。

那麼線性篩程式碼也很好寫了。

沒有模板題,但是應當沒有寫錯。

#include <stdio.h>
#define LL long long
using namespace std;
const int N=1e7+3;
inline LL rin()
{
    LL s=0;
    bool bj=false;
    char c=getchar();
    for(;(c>'9'||c<'0')&&c!='-';c=getchar());
    if(c=='-')bj=true,c=getchar();
    for(;c>='0'&&c<='9';c=getchar())s=(s<<1)+(s<<3)+(c^'0');
    if(bj)s=-s;
    return s;
}

bool pri[N];
int var[N];
int d[N];
int tail;

int main()
{
    int n=rin();
    var[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(!a[i])d[++tail]=i,var[i]=i-1;
        for(int j=1;j<=tail;j++)
        {
            int now=i*d[j];
            if(now>n)break;
            a[now]=true;
            if(i%d[j]==0)
            {
                var[now]=var[i]*d[j];
                break;
            }
            var[now]=var[i]*var[d[j]];
        }
    }
    return 0;
}