加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

算法学习-莫比乌斯反演

发布时间:2020-12-13 20:43:07 所属栏目:PHP教程 来源:网络整理
导读:写在前面 必须把更多的精力放在文化课上了,所以这段时间的学习和数学相干的比较多,希望可以对文化课有帮助. 莫比乌斯反演公式 g ( n ) = ∑ d | n f ( d ) ? f ( n ) = ∑ d | n μ ( d ) g ( n d ) 基础知识 μ 函数 f ( n ) = ? ? ? 1 , ( ? 1 ) k , 0 , n

写在前面

  • 必须把更多的精力放在文化课上了,所以这段时间的学习和数学相干的比较多,希望可以对文化课有帮助.

莫比乌斯反演公式

  • g(n)=d|nf(d)?f(n)=d|nμ(d)g(nd)

基础知识

  • μ函数
    f(n)=???1,(?1)k,0,n=1n=p1?p2?...?pkn=others
  • μ 函数是积性函数,由于当 n 是质数时 μ(n)=(?1)1=?1,所以可以通过筛法求出 μ 函数.
mu[1] = 1; for(i = 2; i <= n; i++) { if(!vis[i]) { prime[++c] = i; mu[i] = -1; } for(j = 1; prime[j] * i <= n; j++) { vis[prime[j] * i] = 1; if(i % prime[j] == 0) { mu[prime[j] * i] = 0; break; } mu[prime[j] * i] = -mu[i]; } }

莫比乌斯反演的证明

  • 可以从后向前证明.
  • 已知 g(n)=d|nf(d)
  • 求证 f(n)=d|nμ(d)g(nd)
  • 证明
    f(n)=d|nμ(d)g(nd)=d|nμ(d)k|ndf(k)=d|nk|ndf(k)?μ(d)

    然后的1步让我很头疼,要把 f(k) 提出来,统计 f(k) 所乘的 μ(d)的和.
    仔细视察,k 的取值范围就是 n 的所有因子. 如果 f(k) 要和 μ(d) 相乘,那末满足的关系是 k|nd,也就是 k?m=nd,变换1下情势就得到 d?m=nk,即 d|nk. 也就是 f(k)(编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读