欧拉筛法与积性函数
来源:互联网 发布:酷听说软件问题 编辑:程序博客网 时间:2024/05/16 07:05
欧拉筛法
普通的筛法,即Eratosthenes筛法,复杂度为
先给出欧拉筛法的代码:
for(int i=2;i<=n;i++){ if(vis[i])prime[++prime[0]]=i; for(int j=1;j<=prime[0]&&prime[j]*i<=n;j++){ vis[i*prime[j]]=0; if(!(i%prime[j]))break; }}
欧拉筛法的思想是:
1.如果这个数是质数,那么就将它与之前的质数的乘积挖掉
2.如果这个数是合数,那么就将它与从2到它最小的质因子之间的质数的乘积分别挖掉
考虑一个数
用欧拉筛法求欧拉函数
先来回顾一下欧拉函数有什么性质:
1.它是一个积性函数,即当(i,j)=1,
2.对于任意的质数p,
3.对于任意的质数p,
所以我们分两种情况讨论:
1.
显然,
2.
由于n,p不互质,所以不能直接用积性推了。假设n中有k个p这个质因子,
代码如下:
for(int i=2;i<=n;i++){ if(vis[i])prime[++prime[0]]=i,phi[i]=i-1; for(int j=1;j<=prime[0]&&prime[j]*i<=n;j++){ vis[i*prime[j]]=0; if(!(i%prime[j])){ phi[i*prime[j]]=phi[i]*prime[j]; break; } phi[i*prime[j]]=phi[i]*(prime[j]-1); }}
阅读全文
0 0
- 欧拉筛法与积性函数
- 欧拉筛法与积性函数
- 数论与积性函数
- 【数论】线性筛与积性函数
- 狄利克雷卷积与积性函数
- 线性筛法与积性函数
- 数论 - 线性筛法与积性函数
- 莫比乌斯与积性函数
- POJ 2480 Longge's problem(积性函数之欧拉函数与gcd)
- 函数与函数指针
- 函数与函数指针
- 函数指针 与 函数
- 函数与函数使用
- 欧拉筛法和积性函数
- 函数的可积性与原函数的存在性辨析
- 构造函数与初始化函数
- 声明与函数、函数指针
- 函数指针与函数名
- 【转】JVM调优总结(八)-典型配置举例2
- common-pool jar 包的简单使用,池化资源对象
- Scala练习-希尔排序
- shell脚本编程基础
- CentOS软件的安装,更新与卸载命令
- 欧拉筛法与积性函数
- sklearn-linear_regression
- Python 嵌套函数
- 在eclipse中使用maven插件生成web工程无法编译通过的问题
- 神经网络训练细节之batch normalization
- 计算机基础知识:什么是位、字节、字、KB、MB
- iOS 真机调试、打包测试、发布程序常见问题
- 面试题目
- C# 多线程学习(一)多线程的概念