• 莫比乌斯函数与莫比乌斯反演


    以下笔记整理自:《算法设计编程实验》吴永辉

    1.结论

    1.1 莫比乌斯函数:莫比乌斯函数可以看做一个辅助函数,它在莫比乌斯反演公式中用到。

    1.2 莫比乌斯反演:莫比乌斯反演公式是 根据和函数来求算数函数的一个公式。

    1.3 算数函数:所有在正整数上运算的函数称为算数函数。

    1.4 和函数:设 f 是算数函数,f 的和函数为F(n) = sum_{ d|n } f(d)。其中d为n的约数,所以 f 的和函数F(n)就是n的所有约数算数函数之和。

    1.5 总结:如果我们已知和函数,想求其对应的算数函数,那么我们可以根据和函数的定义来反推其算数函数,反推出的公式叫莫比乌斯反演公式。又因为莫比乌斯反演公式具有普适性与抽象性(即对求每个算数函数,该公式都适用),为了达到这种普适性,需要一个辅助函数,就叫做莫比乌斯函数,它本质上是和函数的系数。

    2.前置概念

    2.1 欧拉函数:定义自寻。设n的欧拉函数为phi(n)。

    2.2 积性函数:定义自寻。欧拉函数是积性函数,但不是完全积性函数。

    2.3 欧拉函数公式:

    • 如果p是一个素数,且k是正整数,则phi(p^k) = p^k - p^(k-1)。
    • 如果m和n是互素的正整数,则phi(mn) = phi(m)*phi(n)。

    2.4 唯一分解定理:任意一个自然数n都可以分解为若干个素数之积(没说不同素数啊)。

    3.莫比乌斯函数

    3.1 莫比乌斯函数的作用:见1.1。

    3.2 莫比乌斯函数的定义:

    如果n有平方因子,则mu (n) = 0;如果n没有平方因子,并且分解后有奇数个素因子,则mu (n) = -1;如果n没有平方因子,且分解后有偶数个素因子,则mu (n) = 1

    3.3 莫比乌斯函数求法(伪代码):

    3.4 代码实例:

    #include<cstdio>
    const int maxn = 1e5;
    int v[maxn],miu[maxn];
    void mobius(int n){
    	for(int i = 1;i <= n;i++)	miu[i] = 1,v[i] = 0;
    	for(int i = 1;i <= n;i++){
    		if(v[i])	continue;
    		miu[i] = -1;
    		for(int j = 2*i;j <= n;j += i){
    			v[j] = 1;
    			if((j/i)%i == 0)	miu[j] = 0;
    			else miu[j] *= -1;
    		}
    	}	
    }
    int main(){
    	mobius(maxn);
    }

    4.莫比乌斯反演公式

    4.1 莫比乌斯反演公式:设f是算数函数,F是f的和函数,F(n) = sum _{d|n} f(d),则f(n) = sum _{d|n} mu (d)F(n/d),其中n是正整数。

    4.2 

  • 相关阅读:
    数据中心网络架构的问题与演进 — NFV
    数据中心网络架构的问题与演进 — 云网融合与 SD-WAN
    数据中心网络架构的问题与演进 — 混合云与 VPC 专有网络
    数据中心网络架构的问题与演进 — SDN
    数据中心网络架构的问题与演进 — Overlay 网络
    ASP.NET MVC- Controllers and Routing- Controller Overview
    ASP.NET MVC- VIEW Creating Page Layouts with View Master Pages Part 4
    ASP.NET MVC- VIEW Using the TagBuilder Class to Build HTML Helpers Part 3
    ASP.NET MVC- VIEW Creating Custom HTML Helpers Part 2
    ASP.NET MVC- VIEW Overview Part 1
  • 原文地址:https://www.cnblogs.com/long98/p/10352146.html
Copyright © 2020-2023  润新知