• 数论相关


    莫比乌斯反演的证明

    [求证:[n==1]=sum_{d|n}mu(d)\ 设n=prod_{i=1}^{k}p_i^{a_i} (pin exttt{Prime})\ 若d的约数中某一个质数的指数不为1,则mu(d)为0~(莫比乌斯函数的定义)\ 则d取值为1或prod_{i=1}^{k}p_i*b_i (forall b_iin[1,0])\ sum_{d|n}mu(d)=sum_{i=1}^{k}C(k,i)*(-1)^{k}+1~~~~~~(C为排列组合公式)\ =sum_{i=0}^{k}C(k,i)*(-1)^{i}\ (易知)在2le k这个式子值为0\ 当k=0时即n=1时,式子为1\ Q.E.D. ]

    还是解释下后面那个式子吧。

    [当k为奇数时,根据组合公式的性质:C(n,i)=C(n,n-i)\ 代入sum_{i=0}^{k}C(k,i)*(-1)^{i}\ =sum_{i=0}^{lfloor k/2 floor} C(k,i)*(-1)^i+C(k,k-i)*(-1)^{k-i}\ =sum_{i=0}^{lfloor k/2 floor} C(k,i)*(-1)^i+C(k,i)*(-1)^{k-i}\ 显然i与k-i的奇偶性不同,式子为0\ 当k为偶数时,有一点麻烦,就不用式子证明了\ 因为每一个排列组合式子其实是杨辉三角中的一个数\ 有C(n,m)=C(n-1,m)+C(n-1,m-1)\ 将这个公式代入式子的每一项,最后会两两抵消,式子会变成0\ Q.E.D ]


    欧拉反演的证明

    [求证:n=sum_{d|n} varphi(d)\ 设f(n)=sum_{d|n}varphi(d)\ 设i,j~(gcd(i,j)==1)\ 则f(ij)=sum_{d|ij}varphi(d)=(sum_{d|i}varphi(d)) imes(sum_{d|j}varphi(d))\ 即f为积性函数,设pin exttt{prime}\ f(p^k)=sum_{d|p^k}varphi(d)=sum_{d=0}^{k}varphi(p^i)\ 因为varphi是积性函数 则f(p^k)=1+sum_{i=0}^{k-1}p^i imes(p-1)\ 由等比数列可得f(p^k)=p^{k}(p-1)/(p-1)=p^k\ 则f(n)=prod_{i=1}^{k}f(p_i^{q_i})=prod_{i=1}^{k} p_i^{q_i}=n\ Q.E.D ]


    Catalan数的相关证明

    • 通项公式

    [证:C_{2n}^{n}-C_{2n}^{n-1}=frac{1}{n+1}C_{2n}^{n}\ C_{2n}^{n}=frac{(2n)!}{n! imes n!}\ C_{2n}^{n-1}=frac{(2n)!}{(n-1)! imes (n+1)!}=frac{(2n)! imes frac{n}{n+1}}{n! imes n!}\ C_{2n}^{n}-C_{2n}^{n-1}=frac{n+1-n}{n+1} imes frac{(2n)!}{n! imes n!} =frac{1}{n+1}C_{2n}^{n}\ Q.E.D ]


    • Catalan递推式

    [证:f(n)=f(n-1) imes frac{4n-2}{n+1}\ f(n)=frac{C_{2n}^{n}}{n+1}=frac{(2n)!}{(n+1) imes n! imes n!}\ f(n-1)=frac{C_{2n-2}^{n-1}}{n}=frac{(2(n-1))!}{n imes (n-1)! imes (n-1)!}\ f(n)=f(n-1) imesfrac{(2n-1) imes 2n imes n}{n imes n imes (n+1)}\ f(n)=f(n-1) imes frac{4n-2}{n+1}\ Q.E.D ]

    欧拉筛

    • 筛质数(原理)

    埃筛:

    inline void init()
    {
        for (int i = 2; i <= N; i++)
        {
            if (!vis[i])
                prime[++top] = i;
            for (int j = 1; j <= top && i * prime[j] <= N; j++)
                vis[i * prime[j]] = 1;
        }
    }
    

    以下 (i,j)指的都是代码中的 (i,j)

    埃筛应该都能理解,但是埃筛会对每个合数 (n)(k) (小于 (sqrt(n)) 的质数 (prime[j]) 的个数) 遍,于是在埃筛的基础上,我们要保证每个合数都被筛 (1) 遍。

    我们钦定方法为每个合数都只被最小的质因子 (j) 筛到一遍。

    因此,要保证最小的质因子是 (prime[j]) 而不是 (i) 中的质因子,即当 (prime[j])(i) 的约数时,(i) 中有质因子 (prime[j]) ,后面筛下去都是无意义了。

    欧拉筛:

    inline void init()
    {
        for (int i = 2; i <= N; i++)
        {
            if (!vis[i])
                prime[++top] = i;
            for (int j = 1; j <= top && i * prime[j] <= N; j++)
            {
                vis[i * prime[j]] = 1;
            	if(i % prime[j] == 0)
                    break;
            }
        }
    }
    
  • 相关阅读:
    不走弯路,就是捷径
    小白逆袭之路
    java期末设计(十三周)
    java第6次作业
    java第五次作业
    java第四次作业
    第三次作业
    第二次作业
    对异常的看法
    java学习笔记(一)
  • 原文地址:https://www.cnblogs.com/RedreamMer/p/13404069.html
Copyright © 2020-2023  润新知