算法OJ—筛法生成素数

筛法——求n以内质数个数 朴素筛 埃氏筛 欧式筛 判断一个数是否为质数 区间筛法 阅读详情

筛法(Sieve Method)

时限:1000ms 内存限制:10000K 总时限:3000ms

描述:

用筛法求[a,b]中的素数。
Find out the prime numbers in [a, b].

输入:

2个正整数:a b。
a、b均在1000以内,且a小于等于b。
2 positive integers: a, b. Both a and b are less than or equal 1000 and a is less than or equal to b.

输出:

[a b]区间内的所有素数,每个单独一行。
All primes in [a, b], each one in a row.

输入样例:

2 5

输出样例:

2
3
5

计算素数通常的思路是在一个区间内通过将n/sqrt(n)来进行求解,时间复杂度较高复杂度为O(n * sqrt(n)),对于大范围内的数值求解比较浪费时间。通过筛法求素数可以提高程序执行的效率。

#include<iostream>
using namespace std;

int arr[1002] = {0};

void  initPrime(int a,int b){
    int pos;
    int div = 2;
    while(div < b){
        for(pos = a; pos <= b; pos++){
            if(pos % div == 0 && div != pos){
                arr[pos] = 1;
            }
        }
        div++;
    }
}

int main(){
    int a, b;

    cin >> a >> b;
    int i;
    initPrime(a, b);
    arr[1] = 1;
    for(i = a; i <= b; i++){
        if(arr[i] == 0){
            cout << i << endl;
        }
    }
}


 

掌握快速素数筛法:计算机科学中的高效素数检索技术 primesieve库是专为高性能计算素数设计的,它提供了一个简单的接口来生成一定范围内的所有素数。该库具备以下特点:多线程支持,能够显著提高大范围内的素数生成速度。多种筛选算法实现,包括线性筛和轮换筛(wheel factorization)。良好的内存管理,以减少大范围筛选时的内存消耗。与现代C++标准兼容,易于集成到新旧项目中。primesieve库提供了许多函数用于操作素数,其中核心函数包括::生成小于等于n的素数,并通过回调函数返回。:找到第n个素数。 阅读详情

相关推荐

atkins_primes:使用阿特金斯筛法生成小于给定极限的素数

atkins_primes 使用阿特金斯筛法生成小于给定极限的素数 使用 primes.txt 文件放在 /storage/emulated/0/data/primes.txt 下,直接用 Android JUnit 测试

C++习题--筛法求素数

C++习题 用筛法求之N内的素数

生物医学工程学生的博客 461

用筛法求素数的的源代码

使用数组,运用筛法球素数,效率高,只需该变N的大小变可以求出N以内的素数。

素数筛选法

埃拉托斯特尼筛法 质数的倍数必然不是质数,所以遇到质数,就把他的倍数划掉 const int N = 10001; //false为质数,true为合数 bool visit[N]; void eratosthenesSieve() { //0,1特判 visit[0] = visit[1] = true; for (int i = 2; i*i < N; ++i) { ...

思维缜密的博客 2716

筛法求素数(源代码C++)

源代码 看完写了一个 呵呵 需要的看看

GNSS - PPP软件 - GAMP 在VS2019/2022下完成调试、跑通程序(超详细!)

WIN32;_DEBUG;_CONSOLE;O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3。

qq_43381998的博客 8251

算法篇——素数筛

埃氏筛、欧拉筛的讲解

lcx0128的博客 3119

如何用 Python 实现自动化测试?详细步骤和代码示例

Python自动化测试实战指南 本文系统介绍了使用Python构建自动化测试体系的完整方案。主要内容包括: 环境搭建:Python 3.8+虚拟环境配置,安装pytest、Selenium等核心测试库 分层测试实现: 单元测试:通过计算器示例演示pytest断言和异常测试 API测试:使用requests库进行RESTful接口验证 UI测试:Selenium WebDriver实现网页交互测试 高级特性: 使用fixture管理测试依赖 参数化实现数据驱动测试 生成HTML和Allure测试报告 GitH

m0_64424835的博客 452

【数论算法】素数筛

本文介绍了素数筛的几种常见算法:试除法、埃氏筛法和欧拉筛法。

代码星辰的博客 3072

论文理解【LLM-OR】——【OptMATH】A Scalable Bidirectional Data Synthesis Framework for Optimization Modeling

本文提出 LLM-OR 领域的双向数据合成框架 OptMATH,从已有 MF/PD 出发反向生成 NL,再使用 AutoFormulator 进行正向建模,通过最优值匹配 rejection sampling 确保语义一致性。实现了难度可控的语义一致数据合成

佚失的诗篇 499

基于ROS2 Humble与Livox Mid-360的双雷达点云融合实战解析

本文详细解析了基于ROS2 Humble与Livox Mid-360的双雷达点云融合实战方案。从环境搭建、驱动安装、双雷达配置、外参标定、时间同步到点云融合核心实现,全面介绍了技术要点与避坑指南,并提供了工程化部署与性能优化建议,助力开发者高效实现高精度点云合成应用。

ss78901的博客 1093

素数筛法

。。。

nameofcsdn的博客 3145

Android性能优化之Android Profiler

在移动应用开发中,打造一个流畅、省电且不卡顿的用户体验是至关重要的。然而,随着应用功能的日益复杂,内存泄漏、CPU暴涨、网络卡顿以及电量消耗过快等问题常常化身为隐形杀手,悄悄吞噬着用户体验。为了帮助开发者精准定位并解决这些性能瓶颈,谷歌在Android Studio中集成了一款强大的一站式性能分析工具Android Profiler。Android Profiler作为Android Studio内置的实时数据可视化工具,支持运行在Android 5.0及更高版本的设备上。

xiangzhihong8的专栏 202

线性筛法求素数c语言,[算法]素数筛法(埃氏筛法&线性筛法)

一、素数筛的定义给定一个整数n,求出[1,n]之间的所有质数(素数),这样的问题为素数筛(素数的筛选问题)。二、埃氏筛法(Eratosthenes筛法)埃氏筛法又叫做Eratosthenes筛法,一般叫做埃氏筛。埃氏筛的思想是:\(\forall x\in Z\)的倍数\(2x,3x,...\)都不是质数。因此我们可以从2开始有小到大扫描每个数\(x\),并把\(x\)的倍数\(2x,3x,4x,...

weixin_33488806的博客 1304

1分钟了解LangChain是什么?

是一个基于大型语言模型(LLM)开发应用程序的框架, 它旨在简化语言模型应用的开发流程,特别是在构建对话系统和其他基于语言的AI解决方案时.目标是将复杂的语言模型技术转化为可通过简单API调用实现的功能,从而使开发者能够更加专注于创造性的解决方案设计。高效地解决了开发大语言模型应用的痛点问题。Langchain 最主要的特色是可以将 LLM 应用研发过程中的交互 Prompt、LLM 模型调用、语言模型与环境互动的自适应等方式融为一体。

gorgor在码农 2630

SAP S/4 FICO科目辅助余额表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP S/4 FICO科目辅助余额表开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

我好像病了的博客 329

【蓝桥杯试题 - OJ】 幸运数

Description 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。 首先从1开始写出自然数1,2,3,4,5,6,.... 1 就是第一个幸运数。 我们从2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 .... 把它们缩紧,重新记序,为: 1 3 5 7 9 .... 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, ...

m0_57177727的博客 1002

【WRFDA安装第一期】安装 WRFDA 以运行 3DVAR/4DVAR数据同化

【WRFDA安装第一期】安装 WRFDA 以运行 3DVAR/4DVAR数据同化

WW、forever的博客 1896

算法——筛法求素数

筛法素数打表很早就已经学过筛法的代码了。当时就是强行给记下代码了。现在结合一下思想,把最优化的办法找出来。筛法求素数不同于我们之前在C语言书上说的那两种方法。第一种是在[2,n)上不被整除。第二种是在[2,sqrt(n)]不被整除。这两种在思想和实现上是没有问题的。但是会耗时很多。以至于,在各大OJ上的素数题中,总是会time limited。筛法求素数的思想也很简单。一个数的倍数都不是素数。首先我

大帅比的代码之旅 582

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

埃氏筛法、欧拉筛法(线性筛法)求素数

埃氏筛法、欧拉筛法(线性筛法)求素数

alm_of_csdn的博客 537

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

H106OJ | 幸运数

H106OJ | 幸运数

qq_52068097的博客 178

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

素数表获取的朴素算法与埃氏筛法

朴素算法 可以先来看看一道简单的题目: 试打印 1 - n 范围内的素数表。 分析: 好,我们从1~n进行枚举,判断每个素数是否是素数,如果是素数,则加入素数表。那么这个算法的时间复杂度是多少呢?可以看到,枚举部分的复杂度是O(n),而判断素数的算法是O(n^1/2),因此总复杂度是O(n * n ^1/2)。但是显然这个复杂度对n超过10 ^ 5的情况来说是有问题的。因为对一般的oj系统来说,一...

bogedaye的博客 254

【模拟】蓝桥杯试题 幸运数

题目描述 OJ地址 http://lx.lanqiao.cn/problem.page?gpid=T33 幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成 。 首先从1开始写出自然数1,2,3,4,5,6,… 1 就是第一个幸运数。 我们从2这个数开始。把所有序号能被2整除的项删除,变为: 1 _ 3 _ 5 _ 7 _ 9 … 把它们缩紧,重新记序,为: 1 3 5 7 9...

行仔ovo的博客 1096

oj筛法求素数

题目描述 用筛法求之N内的素数。 输入 N 输出 0~N的素数 样例输入 100 样例输出 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 设计思路: 筛法:去掉所有素数的倍数,剩下的就是素数。 代码: #include<stdio.h> void primeset(bool a[],int n) { int i,j; for(i=0;i<n;i++) .

m0_63573375的博客 732

[蓝桥杯]用筛法求之N内的素数(C语言实现)

题目名称:[蓝桥杯][普及题]——用筛法求之N内的素数;题目描述:用筛法求之N内的素数。

生活·代码_这里是青_分享快乐 5209

关于线性筛法的题 2*x+1 3*x+1

关于线性筛法的题 编写一个程序,按递增的顺序生成集合m的最小的n的个数,m的定义如下:(n<=10000) (1)数1属于m (2)如果x属于m,则y=2x+1和z=3x+1也属于m; (3)此外再没有别的数属于m。 输入:输入一个正整数n 输出:输出集合里从小到大的前n个数 这道题实在有趣,可谓是把我搞的死去活来。 一开始我想的是分别把2x+1和3x+1的结果存入两个数组中去,再通过比较两个数的大小重新排序。 #include<iostream> #include<cstdio

weixin_50547586的博客 971
上一篇: 算法OJ—九鼎之尊
下一篇: 算法OJ—亲密数
GuoMell
博客等级 码龄11年 30粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值