当前位置: 首页 > news >正文

筛法求欧拉函数

思路:

(1)若要分别求1~n每个数的欧拉函数值,则复杂度O(n*n^0.5),超时;

(2)于是考虑用欧拉筛进行求取;

(3)欧拉筛:基于线性筛,在筛质数与合数过程中,递推求取欧拉值:

  1. 对于质数x,欧拉值为x - 1,因为除其自身外,1~n - 1均与其互质;
  2. 对于合数i,如果i%primes[j] == 0,则i*primes[j]与i质因子相同,于是有ph[i*primes[j] ] = ph[i]*primes[j];如果i%primes[j] != 0;则i*primes[j]与i质因子差一个质数primes[j],于是有ph[i*primes[j] ] = ph[i]*(primes[j] - 1)/primes[j] *primes[j];

代码:

#include<bits/stdc++.h>using namespace std;
typedef long long LL;
const int N = 1e6 + 10;
LL primes[N],ph[N],st[N],cnt;void euler(int n)
{ph[1] = 1;for(int i = 2;i <= n;i ++){if(st[i] == 0){primes[cnt ++] = i;ph[i] = i  - 1;}for(int j = 0; primes[j]*i <= n;j ++){st[primes[j] * i ] = 1;if(i % primes[j] == 0){ph[primes[j] * i] = ph[i] * primes[j];break;}ph[primes[j] * i] = ph[i] * (primes[j] - 1);}}LL res = 0;for(int i = 1;i <= n;i ++){res += ph[i];}cout << res;
}int main()
{int n;cin >> n;euler(n);return 0;
}

http://www.lryc.cn/news/126423.html

相关文章:

  • consul限制注册的ip
  • 用AI攻克“智能文字识别创新赛题”,这场大学生竞赛掀起了什么风潮?
  • EJB基本概念和使用
  • 神经网络基础-神经网络补充概念-09-m个样本的梯度下降
  • 分布式 - 消息队列Kafka:Kafka消费者分区再均衡(Rebalance)
  • BIO、NIO和AIO
  • 理解 Go 中的切片:append 操作的深入分析(篇1)
  • 由于找不到mfc140u.dll,无法继续执行代码怎么修复?
  • 【0.1】lubancat鲁班猫4刷入debian网络ping 域名不通问题
  • KafkaStream:基本使用
  • 【数据结构】二叉树
  • 基于灰狼优化(GWO)、帝国竞争算法(ICA)和粒子群优化(PSO)对梯度下降法训练的神经网络的权值进行了改进(Matlab代码实现)
  • jenkins自动化构建保姆级教程(持续更新中)
  • HTTPS 的加密流程
  • Jmeter 参数化的几种方法
  • 剑指Offer45.把数组排成最小的数 C++
  • 【java毕业设计】基于SSM+MySql的人才公寓管理系统设计与实现(程序源码)--人才公寓管理系统
  • golang操作excel的高性能库——excelize/v2
  • 学习51单片机怎么开始?
  • [.NET学习笔记] -.NET6.0项目动态加载netstandard2.0报错但项目添加引用则正常的问题
  • 山景DSP芯片可烧录AP8224C2音频处理器方案
  • 来聊聊托管服务提供商(MSP)安全
  • 最新版本的Anaconda环境配置、Cuda、cuDNN以及pytorch环境一键式配置流程
  • 【数据结构与算法】十大经典排序算法-选择排序
  • 【Spring专题】Spring之Bean的生命周期源码解析——阶段一(扫描生成BeanDefinition)
  • 【C#】判断打印机共享状态
  • 运维监控学习笔记7
  • 【业务功能篇64】maven加速 配置settings.xml文件 镜像
  • Spring Boot(六十四):SpringBoot集成Gzip压缩数据
  • Mac安装opencv后无法导入cv2的解决方法