莫比乌斯函数的两种求法(基于欧拉筛、埃氏筛)
给出莫比乌斯函数的定义:
这里的n即u(i)中的i,即i=1时,u(1)=1;i大于1且i中某个质因子的幂超过1,则u(i)=0;否则,u(i)取决于其质因子个数的奇偶性。
这里给出两个莫比乌斯函数的性质:
简略证明性质1:
由唯一分解定理,在n的因子中,某个因子的质因子的幂超过1,那么u(d)=0,对于性质1我们不用管他,所以只研究质因子的幂全是1次的因子就行。假设n有质因子k个,那么,性质1可以转化成以下式子,即在k个质因子中选i个组成因子,因为i是奇数的时候,这个因子的莫比乌斯函数值是-1,所以奇数项全是负的,偶数项全是正的。
由二项式系数奇数项的和等于偶数项的和,在k>0时,这个式子不论k的奇偶,结果就是0;k=0时,即n=1时,这个式子的结果是1。
简略证明性质2:
先略过,会了再补充。
基于埃氏筛O(nloglogn)的方法求n以内的数的莫比乌斯函数:
const int N=1e6+10;
int mo[N];
void init(int n)
{mo[1]=1;for(int i=1;i<=n/2;i++){if(mo[i]!=0){for(int j=i*2;j<=n;j+=i)mo[j]-=mo[i];}}
}
基于欧拉筛O(n)的方法求n以内的数的莫比乌斯函数:
const int N=1e6+10;
bool vis[N];
int p[N],mo[N],cnt=0;
void init(int n)
{mo[1]=1;for(int i=2;i<=n;i++){if(!vis[i]){p[++cnt]=i;mo[i]=-1;}for(int j=1;j<=cnt;j++){if(i*p[j]>n)break;vis[i*p[j]]=1;if(i%p[j]==0)break;mo[i*p[j]]=-mo[i];}}
}
莫比乌斯函数的两种求法(基于欧拉筛、埃氏筛)相关推荐
- 筛选质数,埃氏筛和欧拉筛(线性筛)
求len之内的所有的素数 除了比较常用的开根号的求法,还有两种更好的方法,埃氏筛和线性筛.其中埃氏筛更好理解,而线性筛(欧拉筛)不好理解但是更快. 埃氏筛 #include <bits/stdc ...
- java random构造方法_Java中的Random()函数及两种构造方法
Java中存在着两种Random函数: java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是 ...
- ML之kNN(两种):基于两种kNN(平均回归、加权回归)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能
ML之kNN(两种):基于两种kNN(平均回归.加权回归)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能 目录 输出结果 设计思路 核心代码 输出结果 Bosto ...
- 模板会有多层镜像_创建镜像的方法有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建,本博文讲解前两种。基于已有镜像的容器创建该方法是使用docke...
创建镜像的方法有三种:基于已有镜像的容器创建.基于本地模板导入.基于Dockerfile创建,本博文讲解前两种. 基于已有镜像的容器创建 该方法是使用docker commit命令,其命令格式为: d ...
- c++STL中的find()函数 有两种使用方法
c++STL中的find()函数 有两种使用方法 方法一: 开头引头文件:中的函数 其调用形式为 find(start,end,value) start搜寻的起点,end搜寻的终点,要寻找的value ...
- 从用户的角度看 c语言中函数有两种,【南开大学】20秋学期(1709、1803、1809、1903、1909、2003、2009 )《C语言程序设计》在线作业答卷...
20秋学期(1709.1803.1809.1903.1909.2003.2009 )<C语言程序设计>在线作业 试卷总分:100 得分:100 一.单选题 (共 40 道试题,共 80 ...
- JavaScript函数的两种声明方式,你了解多少?
函数的两种声明方式 <!DOCTYPE html> <html lang="en"><head><meta charset="U ...
- js定义函数的两种形式及区别
定义函数有两种方法: (1)函数表达式方式 let myFun=function(){console.log("当前是函数表达式"):} (2)函数声明形式 function my ...
- 一.关于实现浏览器弹窗提示内容几秒后自动消失重定向执行其他函数的两种方法
一.关于实现浏览器弹窗提示内容几秒后自动消失重定向执行其他函数的两种方法 第一种方法–向body动态写入div标签调用css效果显示: (新建***.jsp放在WebContent根目录下直接访问ip ...
最新文章
- python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍
- 共享之windows与Linux
- 怎样cp文件夹时忽略指定的文件夹和文件
- Android开源项目--分类汇总
- 数据资产纳入国资保值增值考核
- springboot redis token_Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验
- 【高并发】JUC中的Executor框架详解2
- Iphone 开发常用代码
- matlab 自动交易系统设计2
- html数字什么字体样式,css字体样式属性有哪些?
- GB28181协议——摄像机语音对讲
- K3 WISE,销售订单新增批号并能携带至销售出库单
- McAfee (麦咖啡) 360安全卫士 金山毒霸2008正式免费升级版 超级巡警 IceSword(冰刃)
- Java反序列化漏洞:在受限环境中从漏洞发现到获取反向Shell
- C++编译错误C2440“类型转换”: 无法从“void (__thiscall COpenGLWnd::* )(void)”转换为“DuiLib::DUI_PMSG解决办法
- 基于SSH的实验室预约管理系统
- “助农”成为电商平台最热关键词,拼多多为什么重视农业农村?
- 多级CIC滤波器的matlab仿真
- 力出一孔,向工而生丨ClickPaaS毕普科技战略合并发布会圆满收官
- 释放让iBooks占用的冗余空间