高效寻找素数

找素数(两种比较高效的方法) 质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。大于1的自然数若不是素数,则称之为合数。 埃式筛法: 所有的偶数(除2以外)都为合数,所有的奇数不一定为奇数 ①先把所有的除2以外的偶数都标记为0,所有的奇数都标记为1; 0,1标记为0,2标记为1; ②用for循环找出奇数中的非素数 ③奇数的... 阅读详情

问题:寻找1-10000以内所有的质数(素数)
      由于挨个判断质数的时间复杂度很高,故需要一种高效的算法,其实算法真正在逻辑上优化的还是比较少数的,一般都是用时间去换空间,或是以空间去换时间

      所以这道题的改进的思路就用挨个打表的方法,从2到根n,把每个数的倍数都置为false,例如,对已2,则2的倍数4,6,8。。。置为false,最后差表为true的就是素数

public class QueryPrime {
	public static void main(String [] args){
		checkPrime(16);
	}
	public static void checkPrime(int a){
		int b=a+1;
		boolean [] prime=new boolean[b];
		for(int i=0;i<b;i++){
			prime[i]=true;
		}
		for(int i=2;i<=(int)Math.sqrt(b);i++){
			for(int j=2;i*j<b;j++){
				    if(prime[i*j]){
						prime[i*j]=false;
				    }

			}
		}
		for(int k=2;k<b;k++){
			if(prime[k]==true){
				System.out.print(k+"  ");
			}
		}
	}
}


<span style=" font-size: 18px; font-family: Arial, Helvetica, sans-serif; color: rgb(153, 153, 153); background-color: rgb(255, 255, 255);"><strong><span style="font-family: SimHei;"></span></strong></span>
埃拉托色尼筛法:寻找素数的高效算法 然后,从2开始遍历数组,若当前数值i为素数,则将i的倍数(从i的平方开始)标记为False。埃拉托色尼筛法是一种高效的素数查找算法,其时间复杂度为O(nlog(logn)),在处理大范围的素数查找时表现出色。以上代码定义了一个名为sieve_of_eratosthenes的函数,它接受一个整数n作为参数,并返回小于等于n的所有素数的列表。从2开始遍历数组,若is_prime[i]为True,则将i的倍数(不包括i本身)标记为False,因为它们不是素数。运行以上代码,将输出小于等于100的所有素数的列表。 阅读详情

相关推荐

Python实现:寻找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],这些就是100以内的所有素数。然后,使用一个循环从2到n的平方根+1的范围内依次判断n是否能被这些数整除。如果存在一个能整除n的数,则n不是素数,返回False;否则,n是素数,返回True。试除法的基本思想是,对于一个数n,我们从2开始,依次判断n是否能被2到n-1之间的整数整除。

PixelShadeZ的博客 1116

LeetCode刷题笔记——高效寻找素数

LeetCode刷题笔记——高效寻找素数 素数的定义: 如果一个数只能被1和它本身整除,那么这个数就是素数。 返回区间内有几个素数: int countPrimes(int n) { int count = 0; for (int i = 2; i < n; i++) if (isPrim(i)) count++; return count; } // 判断整数 n 是否是素数 boolean isPrime(int n) { // 此处应该为sqrt(n)

喜欢散步的程序员——一支铅笔 597

Java中两种高效算法实现寻找素数

素数是只能被1和它本身整除的自然数,具有唯一性且是数论中的基础。素数不仅在数学中占有重要地位,在密码学、计算机科学等领域也有广泛的应用。素数的分布虽然看似无序,但其背后隐藏着深层次的规律性,这些规律的探索是数学家和计算机科学家共同关注的课题。素数,也称为质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。素数是数论中的基本对象,也是构成自然数的基石。每个大于1的自然数要么本身就是素数,要么可以被分解为素数的乘积,这种分解在数学上称为素数的唯一分解定理。

weixin_42376614的博客 1109

求解素数几种方法

转贴文章请注明:逸学堂 求解一个算法,我们首先要知道它的数学含义.依据这个原则,首先我们要知道什么是素数.; 素数是这样的整数,它除了表示为它自己和1的乘积以外,无论他表示为任何两个整数的乘积。找素数的方法多种多样。1:是从2开始用“是则留下,不是则去掉”的方法把所有的数列出来(一直列到你不想再往下列为止,比方说,一直列到10,000)。第一个数是2,它是一个素数,所以应当把它留下

ugg的专栏 4816

【Spreadsheet】香港规范结构设计电子表格库开发方案

深入理解香港本地规范特点和要求结合国际先进标准(Eurocode) 的技术内容考虑香港地理环境特殊性 (台风、地质等)建立完善的质量控制体系保持持续更新维护的能力。

hmywillstronger的博客 1361

5G NR 物理层 流程一:从帧结构到TB块,PDSCH/PUSCH 资源映射与TBS计算实战

本文详细解析了5G NR物理层流程,从帧结构到TB块的计算,重点介绍了PDSCH/PUSCH资源映射与TBS计算的实战方法。通过具体案例和公式推导,帮助工程师掌握5G NR资源分配、MCS选择及TBS量化过程,解决实际部署中的常见问题。

weixin_30897233的博客 94

高效查找素数

素数:一个数如果只能被1和它本身整除,那么这个数就是素数 第一版: 思路:遍历[2,n)每个数,判断每个数是否是素数,判断素数的思路是一次将该数被从2到num-1整除,如果其中某个数可以整除,直接返回false,说明不是素数,如果返回true,说明是素数,所以count+=1. /** * 统计[2,n)之间有多少个素数 * @param n * @retur...

weixin_39400271的博客 346

RK806S PMIC电源管理芯片调试

当点按PWRON按键时,rk806上电开始启动bootloader和uboot,在执行到此处时检测到是由于按键启动的,所以0x5d的值是0x80,0x74的值是0x80,在一般情况下,mode都默认是none的,所以mode值为11,因此就进入了我们的if判断,若是由于按键启动的,则直接调用rk8xx_shutdown函数关掉,进入这个函数会看到实际是通过i2c给0x72寄存器的BIT(0)写1,使其关机。当SoC在12V电源已经接入,且处于关机状态时,使用PWRON按键开机,0x74的值则为0x80。

Y1anoohh的博客 2541

如何高效寻找素数

文章目录基础版优化点最终版 如果⼀个数如果只能被 1 和它本⾝整除,那么这个数就是素数。 基础版 //返回区间[2,n)中,素数的个数 int countPrimes(int n) 时间复杂度O(n^2) int countPrimes(int n){ int count = 0; for(int i=0; i<n; i++){ if(isPrime(i) count++; ret...

Ellie棒棒哒的博客 423

Starlink第三代终端与第二代终端的差异分析

SpaceX星链第三代终端实现显著升级,硬件售价维持599美元不变但性能全面提升。相比第二代产品,第三代终端取消自动调节电机改为手动定向,防水防尘等级提升至IP67,天线面积扩大46%,支持235台设备连接(提升87%),下载速度可达1Gbps(提升4倍),延迟降至20ms以下。新增3个千兆接口和WiFi6支持,同时推出199美元单独路由器选项。这些改进使第三代终端在保持价格优势的同时,更好地满足户外、移动和商业场景需求,标志着SpaceX卫星互联网服务从亏损销售转向盈利模式的重要转折。

通信行业老兵、物联网从业者,做一个有趣的普通人。 3028

3D-IC测试挑战与Tessent解决方案解析

3D-IC技术通过硅通孔(TSV)实现芯片垂直堆叠,是延续摩尔定律的关键路径。该技术面临三大核心挑战:KGD标准严苛化要求测试覆盖率达99.5%以上,存储器测试需兼容LPDDR/HBM等多种协议,逻辑堆叠需解决TSV互连的电气特性和时序验证问题。Mentor Tessent平台采用混合测试架构,结合压缩扫描测试(ATPG)和内建自测试(BIST)技术,实现100x测试数据压缩比和99.97%的TSV缺陷检出率。这些创新方案在移动SoC和高性能计算芯片中已获验证,测试时间缩短73%,缺陷逃逸率降低77%。随着

weixin_30621711的博客 376

如何用算法高效寻找素数?

预计阅读时间:5 分钟素数的定义很简单,如果一个数如果只能被 1 和它本身整除,那么这个数就是素数。不要觉得素数的定义简单,恐怕没多少人真的能把素数相关的算法写得高效。本文就主要聊这样一...

azl397985856的专栏 267

大疆 DJI Mobile SDK实战指南——从零构建Android示例开发环境

本文提供了一份详尽的DJI Mobile SDK Android开发环境搭建实战指南。文章手把手教你从注册开发者账号、获取App Key,到配置Android Studio、下载官方示例代码,最终成功运行DJI官方Android示例程序,帮助开发者快速入门无人机应用开发,避开常见编译与依赖问题。

weixin_29188043的博客 273

Java寻找素数的高效算法

在看Java语言程序设计进阶篇这本书,看一下找素数的算法。具体要求是给出一个数n,打印出小于等于n的所有素数第一种方法,代码如下  : Scanner input = new Scanner(System.in); System.out.print("Find all prime numbers &lt;= n, enter n: "); int n = input.nextIn...

yeya24的博客 5718

第三章-python基础语法

有C语言基础应该这样学 Python。

qq_46187594的博客 1175

华为OD机考双机位C卷 - 采购订单 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 采购订单 。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 426

数学之高效寻找素数

求[2,n]中有几个素数 素数定义:只能被1和本身整除 def isPrime(n): #判断是否为素数 for i in range(2, int(sqrt(n)): if n % i == 0: # 有其他的因子 return False return True def countPrime(n): dp = [True for _ in range(n + 1)] for i in range(2, n + 1): if isPrime(i): j = 2 * i

AndyJ的学习之旅 194

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

五分钟小知识:如何用算法高效寻找素数?

点击蓝色“五分钟学算法”关注我哟加个“星标”,天天中午 12:15,一起学算法作者 | labuladong来源 | labuladong素数的定义很简单,如果一个数如果...

程序员吴师兄的博客 519

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

高效寻找某个范围内的全部素数

素数:如果一个数只能被1和它本身整除,那么这个数就是素数。2是最小的素数。 问题描述:寻找[0,n]之间的全部素数。 代码实现: #include<iostream> #include<vector> using namespace std; #include<iostream> #include<vector> using namespace std; vector<bool> judgePrimes(int n) { v

ring__的博客 507

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

判断一个数是否为两个素数乘积_如何用算法高效寻找素数?

预计阅读时间:5 分钟素数的定义很简单,如果一个数如果只能被 1 和它本身整除,那么这个数就是素数。不要觉得素数的定义简单,恐怕没多少人真的能把素数相关的算法写得高效。本文就主要聊这样一个函数://返回区间[2,n)中有几个素数intcountPrimes(intn)//比如countPrimes(10)返回4//因为2,3,5,7是素数你会如何写这个函数?当...

weixin_39721953的博客 1411

1013 数素数 Python实现

1013 数素数 (20)(20 分) 令P~i~表示第i个素数。现任给两个正整数M &lt;= N &lt;= 10^4^,请输出P~M~到P~N~的所有素数。 输入格式: 输入在一行中给出M和N,其间以空格分隔。 输出格式: 输出从P~M~到P~N~的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。 输入样例: 5 27 输出样例: 11 13 17...

BTboay 2566

寻找下一个素数

int i = 2, n = 0, flg = 1; scanf("%d", &n); while (n++) { i = 2;//如果不是上一个值不是素数刷新i的值继续试除下一个数; flg = 1;//刷新标志符; while (i < n) { if (n % i == 0) { flg = 0; break; } i++; } if (flg == 1) { break; } } print

Alicesa的博客 918

HDU 1262 寻找素数对

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1262 #include #include using namespace std; bool is_prime(int n) //素数筛 { for(int i=2; i<=sqrt(n); i++) if(!(n%i)) return 0; return 1; } int

azhuge233的博客 283
上一篇: 已知二叉树的前序遍历和中序遍历,求二叉树的后序遍历
下一篇: Java 内存泄漏总结
0802小乌龟
博客等级 码龄17年 2粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值