首页 > 其他分享 >Euler 筛

Euler 筛

时间:2023-10-12 17:48:20浏览次数:27  
标签:质数 varphi vis Euler Theta 冗余 欧拉

考虑一种线性筛法,可在优于 \(\Theta (n)\) 或 \(\Theta(n)\) 的复杂度下筛素数。

变量解释
  1. \(phi[i]\): 这个就是 \(\varphi(i)\) , 其中 $$\varphi(n)=\sum_{i=1} ^{n} [i|n]$$ 其中 \(\varphi(n)\) 是一个积性函数.

  2. 考虑到埃氏筛法的冗余计算,考虑优化反复标记操作的冗余。维护一个数组 \(vis[N]\),\(vis[i]\) 表示 \(i\) 的最小质数。如果被标记迭代就表示 \(i\) 并非质数,反之为质数。考虑优化。
    维护一个数组 \(prime[N]\) , \(prime[i]\) 等于第 \(i\) 个质数。
    后续再证明一下

巧妙之处

与埃氏筛法相比,欧拉筛将自己的复杂度控制到了 \(\Theta (n)\), 它的核心原理是优化对于 \(x\) 处理 \(x\) 相关的标记。

甚至还能处理对于最小质因数。

先在这里说一下积性函数的性质:

\[\varphi(x) \times \varphi(y) = varphi(x\times y) \]

筛选标记的过程

如果要筛选 \(x\) 相关的质数,维护以下操作:

枚举 \(\forall y\in [1,x] \cap prime\),对 \(y\) 进行以下操作:

首先考虑到欧拉函数的性质,然后对 \(phi[i] , vis[i]\) 迭代。

其次注意到如果 \(y|n\) , 那么就跳出此次的循环。

肉眼可见,因为欧拉还是具有一些奇奇怪怪的冗余东西和大量的 \(\%\) , 导致了欧拉筛巨大的常数。

证明

不证明.jpg

标签:质数,varphi,vis,Euler,Theta,冗余,欧拉
From: https://www.cnblogs.com/qxblog/p/EulerGetPhi.html

相关文章

  • openEuler忘记密码,如何重新设置
     启动openEuler,出现开机画面时,按下字母E mount-oremount,rw/ 输入新的密码:例如,openeuler21.09,需要输入两次回车确认执行成功后,输入命令3:touch/.autorelabelexit关机重启即可 ......
  • 开源大咖说 | openEuler: 技术引领,走向世界
    编者按:2023年9月19日,为期3天的欧洲顶级开源峰会OSSUMMIT2023(OpenSourceSummit)在西班牙举办。作为开放原子开源基金会旗下的项目,openEuler作为钻石级别赞助参会。这也是openEuler和OpenAtom基金会首次联袂在国际舞台上进行展示和亮相。我们很荣幸邀请openEuler技术委员会委员熊伟......
  • 10. (单选题)下面哪个Linux发行版不使用RPM软件包 • A. Fedora • B. OpenEuler • C
    10.(单选题)下面哪个Linux发行版不使用RPM软件包A.FedoraB.OpenEulerC.DebianD.OpenSUSE正确答案:(单选题)负责openEuler版本发布的组织是A.SC(SecurityCommittee)B.TC(TechnicalCommittee)C.理事会D.ReleaseManagementSIG正确答案:2.(单选题)openEuler社......
  • KingbaseES V8R6集群部署案例之---openEuler系统脚本部署故障
    案例说明:在openEuler系统下通过脚本方式部署KingbaseESV8R6集群,脚本执行过程中,加载vip失败。本次故障问题,主要是因为openEuler系统shell和脚本的不兼容引起。适用版本:KingbaseESV8R6系统环境:openEuler-22.03-LTS一、问题现象通过脚本方式部署KingbaseESV8R6集群,脚本执......
  • 基于OpenEuler的信创国产瘦客户机软件系统 DoraOS
    DoraOS是一款瘦客户机系统软件,最新版本基于OpenEuler开发。可以将主机转化为专业的瘦客户机。目前支持x86架构的硬件。软件下载地址为: https://www.doracloud.cn/downloads/32-cn.html制作一张启动U盘,即可进行安装。DoraOS的连接窗口界面如下,界面比较简洁。左侧进入控制中心,右......
  • 【openEuler创新项目探索】一个Java端的向量化BLAS库VectorBLAS
    VectorBLAS简介VectorBLAS是一个使用Java语言实现的向量化BLAS高性能库,目前已在openEuler社区开源。VectorBLAS通过循环展开、矩阵分块和内存布局优化等算法优化,对BLAS函数进行了深度优化,并利用VectorAPIJDK提供的多种向量化API实现。可以理解为:VectorBLAS=VectorAPI+BLAS......
  • openeuler linux内核4.19安装(centos 同理)
    linux内核安装:安装内核步骤下载相应内核版本【我这里用的是linux-4.19.90.tar.gz】下载网址:https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/解压缩到自定位置【我这里是/root/桌面/send/】安装内核图像界面依赖【已安装则跳过】 yuminstallncurses-deve......
  • unity中EulerAngles 和rotation的区别和联系
    unity中EulerAngles和rotation的区别和联系在Unity中,EulerAngles(欧拉角)和rotation(旋转)是用来表示游戏对象的旋转属性的两种方式。它们之间有一些区别和联系。表示方式:EulerAngles:欧拉角以角度的形式表示旋转,使用三个浮点数(X、Y、Z)来表示绕每个轴的旋转角度。rotation:旋转以四......
  • 更多openEuler镜像加入AWS Marketplace!
    自2023年7月openEuler22.03LTSSP1正式登陆AWSMarketplace后,openEuler社区一直持续于在AWS上提供更多版本。目前,openEuler22.03LTSSP1,SP2两个版本及x86arm64两种架构的四个镜像均可通过AWS对外提供,且在亚太及欧洲15个Region开放使用,openEuler将持续提供更多版本和区域。......
  • 华为认证欧拉openEuler-HCIA文本编辑器及文本处理
    文本编辑器及文本处理文本编辑器介绍常见的Linux文本编辑器有:emacsnanogeditkeditvivimLinux文本编辑器-emacsemacs是一款功能强大的编辑器,与其说是一款编辑器,它更像一个操作系统。emacs带有内置的网络浏览器、IRC客户端、计算器,甚至是俄罗斯方块。当然,emacs需要在图形......