zoukankan      html  css  js  c++  java
  • 莫比乌斯函数

    莫比乌斯函数

    定义:

    • 一个正整数(d),由算术基本定理可得(d=p_1^{c_1}*p_2^{c_2},...,p_m^{c_m})

    • (d=1)时,(mu(1)=1)

    • (d)无平方数因数,且(d=p_1,...,p_k)(mu(d)=(-1)^k)

      • 也就是当(d)的所有质因子各不相等时,若(d)有偶数个质因子时,(mu(d)=1);若有奇数个质因子时,(mu(d)=-1)
    • (d)有大于(1)的平方数因数,(mu(d)=0)。(也就是(c_i eq1)

    • 举一下例子吧。

    • (d=1),因为(d=1),所以(mu(d)=1)

    • (d=2)(d=2=2),即有奇数个质因子,(mu(d)=-1)

    • (d=4)(d=4=2^2)(d)有大于1的平方数因数,(mu(d)=0)

    • (d=6)(d=2*3),即有偶数个质因子,(mu(d)=1)

    性质:

    • 莫比乌斯函数是一个积性函数。

    • 积性函数:(a,b)互质,有(f(ab)=f(a)*f(b)),称(f)为积性函数。

    • 证明:分情况讨论一下就行。

    求法:

    • 如果只用求一项,那么直接质因数分解一下就行。
    • 就像求欧拉函数可以用线性筛法求一样,莫比乌斯函数可以用线筛筛法求出。
    void get_mu(int n)
    {
        mu[1] = 1;
        for(int i = 2; i <= n; i++)
        {
            if(!vis[i])
            {
                primes[++cnt] = i;
                mu[i] = -1;
            }
            for(int j = 1; primes[j] <= n/i; j++)
            {
                vis[primes[j]*i] = 1;
                if(i % primes[j] == 0) break;
                else mu[i*primes[j]] = -mu[i];
            }
        }
    }
    
  • 相关阅读:
    写的好的功能参考地址
    碰撞检测原理
    懒加载原理的实现
    jQuery图片延迟加载插件jQuery.lazyload 的使用
    电子工厂生产楼职位解析
    打印条码方式
    条码打印二
    条码打印三
    CSS实现圆角矩形
    条码打印四
  • 原文地址:https://www.cnblogs.com/zxytxdy/p/12166374.html
Copyright © 2011-2022 走看看