首页 > 其他分享 >莫比乌斯函数

莫比乌斯函数

时间:2023-02-06 11:35:42浏览次数:38  
标签:函数 int 乌斯 mu 因子 莫比

唯一分解定理

\[n = \prod^{s}_{i=1} p_{i}^{a_i} = p_{1}^{a_1} p_{2}^{a_2} ··· p_{s}^{a_s} \]

莫比乌斯函数的定义

\[\mu (n) = \left\{ \begin{aligned} & 1 & & n = 1\\\ & 0 & & n含相同质因子\\\ & (-1)^s & & s为n的不同质因子的个数 \end{aligned} \right. \]

例:\(\mu \{ 1,6,10,15 \} = 1\), \(\mu \{ 4,8,9,12 \} = 0\), \(\mu \{ 2,3,5,7,30 \} = -1\)

筛法求莫比乌斯函数

若i是质数,\(\mu [i] = -1\)。

在线性筛中,每一个合数 \(m\) 都是被最最小的质因子筛掉的。

设\(p_j\)是 \(m\) 的最小质因子,则 \(m\) 通过 \(m = j \times p_j\) 筛掉

若 \(i\) 能被 \(p_j\) 整除,则 \(i\) 也包含质因子 。
\(\,\,\,\,\, \mu [m] = 0\)。
若 \(i\) 不能被 \(p_j\) 整除,则 \(m\) 比 \(i\) 多一个不同质因子 \(p_j\) 。
\(\,\,\,\,\,\)若 $\mu [i] = -1 $,则 \(\mu [m] = 1\) 。
\(\,\,\,\,\,\)若 $\mu [i] = 1 $,则 \(\mu [m] = -1\) 。
\(\,\,\,\,\,\)若 $\mu [i] = 0 $,则 \(\mu [m] = 0\) 。
\(\,\,\,\,\,\)所以 \(\mu [m] = - \mu [i]\)

const int N = 1000010;
int p[N], vis[N], cnt;
int mu[N];

void get_mu(int n){      //筛法求莫比乌斯函数
  mu[1] = 1;
  for(int i=2; i<=n; i++){
    if(!vis[i]){
      p[++cnt] = i;
      mu[i] = -1;
    }
    for(int j=1; i*p[j]<=n; j++){
      int m = i*p[j]; 
      vis[m] = 1;
      if(i%p[j] == 0){
        mu[m] = 0;
        break;
      } 
      else
        mu[m] = -mu[i];
    }
  }
}

标签:函数,int,乌斯,mu,因子,莫比
From: https://www.cnblogs.com/wqzgg/p/17094829.html

相关文章

  • 前缀函数与 KMP
    前缀函数概述前缀函数\(\pi_i\)为\(s_{1\dotsi}\)的真前后缀最大相同长度。这里的所有\(s\)下标从\(1\)开始,长度为\(n\)。实现原理首先肯定能想到......
  • python中的lambda函数用法
    python中的lambda函数用法 例1:传入多个参数的lambda函数defsum(x,y):returnx+y用lambda来实现: p=lambdax,y:x+yprint(p(4,6))例2:传入一个参......
  • .Net7运行模型之托管Main函数的调用
    前言:.Net7的CLR最具特色的一个地方,就是运行模型。因为它主宰了整个CLR的运行过程。又因为其庞大的代码量,有的几十万行甚至百万行。所以理解起来非常不容易。本篇拆分来看......
  • 虚函数(涉及汇编原理)
    虚函数1.多态​ 对象的多态性需要通过虚表和虚表指针来完成2.虚表指针1)位置​ 定义在对象首地址的前4字节处(32位)或前8个字节(64位)处2)定义​ 一个二维指针,一个存储......
  • Shell函数
    Shell函数一、Shell函数函数的作用就是把程序里需要多次使用的部分代码列出来,然后为这部分代码起个名字,其它所有的重复调用这部分代码都只用调用这个名字就可以(类似于别......
  • C++ const成员函数如何改变类的成员变量
    C++const成员函数不能改变类的普通成员变量。可以改变类的静态成员变量。可以改变类的被mutable修饰的成员变量。#include<bits/stdc++.h>usingnamespacestd;s......
  • Linux系统Shell脚本第四章:shell函数
    一、shell函数1.函数的作用定义较为复杂的但是需要重复使用的内容,以便再次使用可以直接调用函数节约时间,提高效率2.函数使用步骤①首先是定义函数②其次是调用函数(......
  • 创建my_strstr函数
    #include<assert.h>char*my_strstr(char*p1,char*p2){assert(p1!=NULL);assert(p2!=NULL);//保证指针有效性char*s1=p1;char*s2=p2;char*cur=p1......
  • 完胜的Scan(Excel函数集团)
    Scan看上去简单,就四个字母,其实,嗯,很内涵……Scan的基础用法就三个参数,好吧,实际应该算是四个参数:=Scan(初始值,数据源,Lambda(定义名称1,定义名称2,运算))以上,不算废话的......
  • 小程序云开发联表数据查询以及云函数中的应用
    点击观看视频↓↓↓小程序云开发联表数据查询以及在云函数中的应用|多表查询|连表lookup|聚合函数文章目录​​1、联表查询​​​​(1)lookup联接两个表格​​​​(2)使......