首页 > 其他分享 >筛质数(线性筛法--进阶版)(面对大部分都直接ac)

筛质数(线性筛法--进阶版)(面对大部分都直接ac)

时间:2024-09-23 19:19:50浏览次数:8  
标签:prime ac 进阶 int 质数 个数 st 判定

给定一个正整数 n,请你求出 1∼n 中质数的个数。

输入格式

共一行,包含整数 n。

输出格式

共一行,包含一个整数,表示 1∼n 中质数的个数。

数据范围

1≤n≤10^6

输入样例:
8
输出样例:
4

思路:给一个数:将质数筛到的同时,筛去它的倍数,并且该倍数一定是在给定的数内的

这样在下次判定这个数是否是质数的时候直接忽略,判定下一个数。

#include<iostream>

using namespace std;

const int N=1e6+10;

int n;
bool st[N];//判断状态,该点是否被遍历过
int prime[N];//存放质数

//筛选质数

void szs(int n)
{
    int cnt=0;//记录质数的个数
    
    for(int i=2;i<=n;i++)
    {
        if(!st[i])//如果这个点没有被遍历过,第一次出现这个数值的话
        {
            prime[cnt++]=i;//存放质数
            st[i]=true;
        }
        for(int j=0;prime[j]<=n/i;j++){
            
            int k=prime[j]*i;//这个点是在n个数里面i的倍数
            st[k]=true;//如果是i的倍数的一定不是质数,直接判定为遍历过,下次遇到就不用for循环
            //直接进行下一个数值的判定
            if(i%prime[j]==0)break;//在这边退出是为了保证唯一性,避免重复筛数
        }
    }
    cout<<cnt;
}
int main()
{
    cin>>n;
    
    szs(n);
    
    return 0;
}

标签:prime,ac,进阶,int,质数,个数,st,判定
From: https://blog.csdn.net/2201_75508409/article/details/142371610

相关文章

  • 判断质数(小白秒懂版本)短时间记忆二分模板
    给定 n个正整数 ai,判定每个数是否是质数。输入格式第一行包含整数 n。接下来 n 行,每行包含一个正整数 ai。输出格式共 n行,其中第 i行输出第 i个正整数 ai是否为质数,是则输出 Yes,否则输出 No。数据范围1≤n≤100,1≤ai≤231−1输入样例:226输出样例:Yes......
  • food facts食物营养成分数据集en.openfoodfacts.org.products
    可以参考这里的apiApi.md·琴弦断丶冷笛残/World_Food_Facts_Web_Demo-Gitee.com内容如图:最新官方文件有1Gen.openfoodfacts.org.products.tsv(1.01GB)有个版本是2017年的,50M左右的,解开340M左右 相关:GitHub-openfoodfacts/openfoodfacts-ai:Thisisatrackin......
  • 云原生周刊:Artifact Hub 成为 CNCF 孵化项目|2024.9.23
    开源项目推荐CorootCoroot是一个开源监控工具,旨在为云原生应用提供可观察性。它通过整合指标、日志和追踪信息,专注于提供应用性能的洞察。DirectPVDirectPV是一个开源项目,旨在为Kubernetes工作负载提供高效的直接卷访问。它通过允许应用绕过容器运行时,直接访问持久卷,从而......
  • Oracle中数据类型number(m,n)
    Oracle中数据类型number(m,n)中m表示的是所有有效数字的位数,n表示的是小数位的位数。m的范围是1-38,即最大38位。   1>.NUMBER类型细讲:Oracle  number  datatype  语法:NUMBER[(precision  [,scale])]简称:precision  -->  p          scale  ......
  • oracle数据类型和对应的java类型
    [转]oracle数据类型和对应的java类型 地址:http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/datacc.htm#BHCJBJCCSQL数据类型JDBC类型代码标准的Java类型Oracle扩展的Java类型 1.0标准的JDBC类型:  CHARjava.......
  • VulnHub靶场笔记 - Breach: 2.1
    靶机下载地址:https://download.vulnhub.com/breach/Breach-2_final2.1.zip一.安装下载后为压缩包文件解压后双击打开.ova文件根据压缩包里附带的说明我们需要将靶机的ip配为静态IP:192.168.110.151选择虚拟网络编辑器选择仅主机的网卡并将子网ip改为110网段点......
  • 基于DPU的OpenStack裸金属服务快速部署及存储解决方案
    1方案背景和挑战Openstack作为开源云计算领域的领军项目,凭借其强大的功能、灵活的架构以及活跃的社区支持,在全球范围内得到了广泛的采用。通过Openstack,企业和云服务提供商可以更加高效地管理和利用计算资源、存储资源和网络资源,实现业务的快速部署和灵活扩展,从而赢得市场竞争的先......
  • InvalidDataAccessApiUsageException 和 Write operations are not allowed in read-o
    InvalidDataAccessApiUsageException和Writeoperationsarenotallowedinread-onlymode解决方法2016年04月07日12:35:02阅读数:14221这些天写webservice,一直在测接口,get方法都没问题,就从昨晚开始测save方法的时候出现了这个错误Writeoperationsarenotallo......
  • ECE598HZ: Advanced Topics in Machine Learning
    ECE598HZ:AdvancedTopicsinMachineLearningandFormalMethodsFall2024Homework1DueSep2311:59pmCTTypesetyoursolutionsusingLATEX,createasinglezip fileincludingyoursolutions(ina singlePDF file), your code, andinstructionstorun......
  • Kernel Stack栈溢出攻击及保护绕过
    前言本文介绍Linux内核的栈溢出攻击,和内核一些保护的绕过手法,通过一道内核题及其变体从浅入深一步步走进kernel世界。QWB_2018_core题目分析start.shqemu-system-x86_64\-m128M\-kernel./bzImage\-initrd./core.cpio\-append"root=/dev/ramrw......