
AcWing 874 筛法求欧拉函数
遍历每个质数p,假设没有被处理过。 将p加入质数列表,并计算其欧拉函数值phi(p)=p-1。 对于p的每一个倍数t,假设t上存在p的每一个质因数。
发布日期:2021-05-28 16:27:02
浏览次数:31
分类:精选文章
本文共 589 字,大约阅读时间需要 1 分钟。
欧拉函数phi(n)是数论中的重要概念,用于计算在1到n范围内与n互质的数的个数。为了高效地计算1到n范围内所有数的欧拉函数之和,本文采用了线性筛法的方法,实现了对欧拉函数的快速计算。
首先,初始化了一个标记数组st,用于记录已经处理过的数。构造一个质数数组primes和欧拉函数值数组euler。对于质数p,处理其每一个倍数t=p*q(q为质数),并相应地调整欧拉函数值。具体来说:
- 如果t能被p整除,那么调整t的欧拉函数值。
- 否则,将t的欧拉函数值乘以(p-1)。
通过这种方法,每个数的欧拉函数值可以高效计算,避免了单独计算每个数的复杂度。这一点在处理大n时显得尤为重要,特别是当n达到1e6时,直接逐个计算会导致效率严重下降。
最终,通过遍历1到n的每个数并求和euler数组,得到了1到n范围内所有数的欧拉函数之和。
这种方法的亮点在于线性筛法的效率,能够在O(n log log n)的时间复杂度内完成计算。对于数据范围到1e6的情况,这种方法是合理且高效的,确保了程序能够快速完成计算任务。
通过对欧拉函数的深入理解和对筛法算法的优化,本文成功地实现了对大范围数据的高效处理,解决了问题并展示了算法的实际应用价值。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月25日 11时21分06秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
pip国内镜像(清华大学镜像)
2019-03-15
浅学C#(25)——任务Task
2019-03-15
原生的JavaScript控制复选框的选项个数
2019-03-15
微信小程序云开发:怎么删除云函数?已解决
2019-03-15
什么是句柄(经典)
2019-03-15
本地navicat for MySQL远程连接阿里云的mysql
2019-03-15
第一次被黑
2019-03-15
PyCharm配置anaconda环境
2019-03-15
修改linux 系统自带日志系统systemd-journald && 参数
2019-03-15
Redis工具类
2019-03-15
Numi3 for Macmini文本计算器
2019-03-15
Long型转成Calendar,并获取年月日操作
2019-03-15
淘宝而已,随手就爬,保姆级教程带你装X带你飞!!!
2019-03-15
SpringBoot与缓存(JSR-107、Spring缓存抽象)
2019-03-15
微服务之Gateway实战讲解,小白必备哦!
2019-03-15
ERROR 总结
2019-03-15
Flutter ios打包 白屏问题
2019-03-15