素数线性筛法 → 欧拉筛

news2025/2/22 3:09:16

【题目来源】
https://www.acwing.com/problem/content/870/

【题目描述】
给定一个正整数 n,请你求出 1∼n 中质数的个数。

【输入格式】
共一行,包含整数 n。

【输出格式】
共一行,包含一个整数,表示 1∼n 中质数的个数。

【数据范围】
1≤n≤10^6

【输入样例】
8

【输出样例】
4

【算法分析】
普通的素数筛法,即将给定的数 n 以内的所有数 x 的倍数 kx(k≥2) 都筛掉。
显然由下图可知,同一个数可能被多个素数
重复筛掉。如下图中的 6、12 被重复筛掉。
这需要优化,
欧拉筛便是一种素数的线性筛法。原理是让每个合数只被它的最小质因数筛掉,这样每个合数只会被筛选一次。

 【算法代码】

#include <bits/stdc++.h>
using namespace std;

const int maxn=1e6+5;
int p[maxn];
bool st[maxn];
int cnt;

void getNum(int n) {
    for(int i=2; i<=n; i++) {
        if(!st[i]) p[cnt++]=i;
        for(int j=0; p[j]*i<=n; j++) {
            st[p[j]*i]=true;
            if(i%p[j]==0) break;
        }
    }
}

int main() {
    int n;
    cin>>n;
    getNum(n);
    cout<<cnt<<endl;
    
    return 0;
}

/*
in:8
out:4
*/

【参考文献】
https://zhuanlan.zhihu.com/p/494328631
https://www.acwing.com/solution/content/7950/





 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/892723.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数字实验室】时钟切换

大部分开发者使用 BUFGCTRL 或 BUFGMUX进行时钟切换&#xff0c;它们在时钟切换上可以提供无毛刺输出。然而&#xff0c;了解所涉及的原理是有好处的。 当然&#xff0c;无论我们在同步逻辑中使用哪种技术&#xff0c;重要的是要确保在进行时钟切换时输出上没有毛刺。任何故障都…

无涯教程-Perl - times函数

描述 此函数返回一个四元素列表,为当前进程及其子进程提供用户,系统,子进程和子系统时间。 语法 以下是此函数的简单语法- times返回值 此函数返回ARRAY,($usertime,$systemtime,$childsystem,$childuser) 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -w($use…

一、ls 标准输出时出现乱码符号及解决办法

问题描述&#xff1a;采用 QSSh 登录远程主机时&#xff0c;执行 ls 指令&#xff0c;标准输出中出现乱码符号 如下&#xff0c;在成功 SSH 到远程主机后&#xff0c;执行 ls 指令&#xff0c;标准输出中出现一堆不认识的符号。 从标准输出来看&#xff0c;英文和中文并没有乱…

安科瑞无线测温产品在浙江某半导体项目的应用-安科瑞黄安南

摘 要&#xff1a;半导体被誉为“制造业的大脑”&#xff0c;在关系国家安全和国民经济命脉的主要行业和关键领域占据支配地位&#xff0c;是国民经济的重要支柱。随着数字技术的发展和数字经济在国民经济中所占比重越来越高&#xff0c;半导体产业的重要性还会进一步提升。安全…

文心一言 VS 讯飞星火 VS chatgpt (77)-- 算法导论7.3 2题

二、如果用go语言&#xff0c;在 RANDOMIZED-QUICKSORT 的运行过程中&#xff0c;在最坏情况下&#xff0c;随机数生成器 RANDOM 被调用了多少次?在最好情况下呢?以θ符号的形式给出你的答案? 文心一言&#xff1a; 在 RANDOMIZED-QUICKSORT 的运行过程中&#xff0c;最坏…

使用贝塞尔曲线算法制作曲线

一阶贝塞尔曲线 使用两个点绘制线段 p3p1(p2-p1)*t p1:起点;p2:终点;t:0-1;p3:线段L12上的点 两个点和t的变化(0-1)可得到一条线段 二阶贝塞尔曲线 使用三个点绘制曲线 p12p1(p2-p1)*t p23p2(p3-p2)*t p123p12(p23-p12)*t p12是线段L12上的点&#xff0c; p23是线段L23上的…

android:绘图 (android.graphics包)

android:绘图 View&#xff1a;组件&#xff0c;理解为画布 Drawable:所有可见对象的描述&#xff0c;理解为&#xff1a;素材类 Bitmap&#xff1a;图片类 Canvas&#xff1a;画笔 Paint&#xff1a;画笔样式与颜色、特效的集合 近期很多网友对Android用户界面的设计表示很感…

Lnton羚通关于如何解决nanoPC-T4 upgrade报错问题?

nanoPC-T4 在 ​​# sudo apt update 和 sudo apt upgrade​​升级或安装软件 ​​sudo apt install xxx​​时遇到以下问题&#xff1a;​​Failed to set up interface with /etc/hostapd/​ Setting up hostapd (2:2.6-15ubuntu2.8) ... Job for hostapd.service failed be…

学习 Linux 系统路线图

在计算机科学领域&#xff0c;Linux 操作系统以其稳定性、灵活性和卓越性能而受到广泛欢迎。要真正掌握 Linux 系统&#xff0c;我们需要深入了解其关键组成部分&#xff0c;包括系统、内存、进程、网络和存储等模块。让我们深入探索这些模块&#xff0c;以建立起对 Linux 系统…

【轻量级神经网络】ShuffleNetv1-2详解

文章目录 1、ShuffleNetV11.1、分组卷积1.2、channel shuffle1.3、ShuffleNet基本单元1.4、整体结构 2、ShuffleNetV22.1、基本单元2.2、整体结构 1、ShuffleNetV1 1.1、分组卷积 Group convolution是将输入层的不同特征图进行分组&#xff0c;然后采用不同的卷积核再对各个组…

KVM配置使用ovs网桥

KVM配置使用ovs网桥 1、安装openvswitch 2、启动服务 3、配置ovs 重启网络服务 systemctl restart network 4、 KVM配置使用ovs网桥 配置生效&#xff1a;virsh net-define br0.xml virsh net-start bro virsh net-autostart br0 5、虚…

怎么实现技术评卷时间0投入的?(上)

01 痛苦的技术问答题评审 指针走到了九点&#xff0c;凝视着时钟的技术招聘官Jasmine从昏沉中回到现实&#xff0c;她将咖啡连同叹息一口抿了下去&#xff0c;并端正坐在电脑前。又是一天的评卷日…… 技术招聘已持续数周&#xff0c;公司筛选出了100位嵌入式工程师候选人的技…

ATA-2000系列高压放大器——应用场景介绍

ATA-2000系列高压放大器——应用场景介绍 ATA-2000系列是一款理想的可放大交、直流信号的高压放大器。最大差分输出1600Vp-p (800Vp)高压&#xff0c;可以驱动高压型负载。电压增益数控可调&#xff0c;一键保存常用设置&#xff0c;为您提供了方便简洁的操作选择&#xff0c;同…

【03 英语语法:从句(名词从句、定语从句/形容词从句、状语从句/副词从句)】

从句 从句&#xff1a;名词从句、定语从句、状语从句&#xff08;名定状名形副&#xff09;1. 名词从句&#xff08;名词&#xff09;&#xff1a;主语、宾语、表语、同位语、宾补▲名词从句的种类&#xff08;按引导词&#xff09;&#xff1a; that、whether、疑问词 句子⑴…

pycharm配置anaconda环境

前提&#xff1a; 使用anaconda已经创建了一个环境名为test&#xff0c;现在要将test环境中的python解释器作为pycharm中工程的解释器。 如何添加解释器 点击&#xff1a;File->Project->Python Interpreter->右上角Add Interpreter->Add Local Interpreter. 选…

blender 发射体粒子

发射体粒子的基础设置 选择需要添加粒子的物体&#xff0c;点击右侧粒子属性&#xff0c;在属性面板中&#xff0c;点击加号&#xff0c;物体表面会出现很多小点点&#xff0c;点击空格键&#xff0c;粒子会自动运动&#xff0c;像下雨一样&#xff1b; bender 粒子系统分为两…

UE4/UE5 “无法双击打开.uproject 点击无反应“解决

一、方法一&#xff1a;运行UnrealVersionSelector.exe 1.找到Epic Game Lancher的安装目录&#xff0c; 在lancher->Engine->Binaries->Win64->UnrealVersionSelector.exe 2.把UnrealVersionSelector.exe 分别拷贝到UE4 不同版本引擎的 Engine->Binaries->…

【Modbus通信实验二】VC++编写串口调试助手

编写串口调试助手并能在虚拟机中实现虚拟端口通信。步骤如下&#xff1a; 项目中引入Microsoft Communications Control组件&#xff0c;并编写串口初始化函数。 void CMODBUSDlg::initcomm() {//串口状态&#xff0c;避免重复打开串口CommOpenFlag FALSE;//设置串口端口号…

Maven构建工具下载与配置(图文详细)

一.下载安装 1.找到官网 2.进行下载 3.解压文件到想要的目录 二.系统配置 配置本地仓库localRepository 1.配置本地仓库位置xml 为了方便管理&#xff0c;在apache-maven-3.9.4目录下创建mvn_rep 2.找到ocalRepository标签 3.设置本地仓库路径 配置私服&#xff08;由于正常…

2023年7月京东空调行业品牌销售排行榜(京东数据运营)

上半年空调市场的热度较高&#xff0c;尽管受家电市场整体环境的影响&#xff0c;同比来看空调销量销额有一定幅度的下滑&#xff0c;但从环比来看&#xff0c;空调市场的销量销额纷纷翻倍增长。不过&#xff0c;进入7月份&#xff0c;空调市场整体就比较低迷了。 根据鲸参谋平…