求一亿以内的素数

筛法求100000000(一亿)以内的所有素数 算法: s0:定义数组并赋值,2是素数(计数、输出) s1:把2的倍数删掉; s2:2之后剩下的第一个数字是素数,这个数字是3(计数、输出); s3:把3的倍数删掉; s4:3之后剩下的第一个数字是素数,这个数字是5(计数、输出); s5:把5的倍数删掉; ……(类推省略) C语言实现: #include <stdio.h> int a[100000000];//在主函数外定义全局变量... 阅读详情

晚上由于要帮老师算一个数学猜想,需要一个素数集合,于是写了一个。

思路:如果一个数不能被所有比它小的素数整除,那么它也是素数。

MAX就是素数的上限,计算一亿以内的素数,总共用时171330毫秒,约为171秒。


import java.util.ArrayList;
public class Test{
    static ArrayList<Long> list = new ArrayList<Long>();//存储素数
    public static void main(String[] args){
        long start = System.currentTimeMillis();
        long MAX = 1_0000_0000;//一亿
        findPrime(MAX);
        long end = System.currentTimeMillis();
        System.out.println("一共有" + list.size() + "个素数,用时" + (end - start)/1000.0 + "秒");
    }

    //找出MAX以内的所有素数并存入list
    private static void findPrime(long MAX){
        boolean flag = true;
        list.add(2L);
        for (long n = 3; n <= MAX; n++){
            //检测n是否素数。如果不能被比它小的所有素数整除,则为素数
            flag = true;
            for(int i = 0; i < list.size(); i++){//get()方法参数必须是int
                if(list.get(i)*list.get(i) > n) break;//相当于常用素数算法中的sqrt(n)为上限
                if(n%list.get(i) == 0){
                    flag = false;//能被除尽则说明非素数
                    break;
                }
            }
            if(flag) list.add(n);//保存素数
        }
    }
}

网上百度了一下,找到大神的算法,只需要0.548秒

public class Prime2 {
	public static int calculateNumber(int Nmax) {
		boolean[] isPrime = new boolean[Nmax + 1];
		int[] prime = new int[Nmax / 10];
		int totalPrimes = 1;
		for (int i = 3; i <= Nmax; i += 2)
			isPrime[i] = true;
		isPrime[2] = true;
		prime[0] = 2;
		for (int i = 3; i <= Nmax; i += 2) {
			if (isPrime[i])
				prime[totalPrimes++] = i;
			for (int j = 1; i * prime[j] <= Nmax && j < totalPrimes; j++){
				isPrime[i * prime[j]] = false;
				if(i%prime[j]==0)
					break;
			}
		}
		return totalPrimes;
	}

	public static void main(String[] args) {
		final int Nmax = 100000000;
		double startTime = System.currentTimeMillis();
		int primeNum = Prime2.calculateNumber(Nmax);
		double timeSpent = (System.currentTimeMillis() - startTime) / 1000;
		System.out.println("The prime numbers from 1 to " + Nmax + " is "
				+ primeNum);
		System.out.println("Time spent : " + timeSpent + " s");
	}
}


一亿(100000000)以内的质数表.rar 一亿以内的质数表 整理出来了 立即下载

相关推荐

Prime.java 计算一亿以内素数的个数

暴力法 | 暴力法优化(取中间数)|暴力法优化(取平方根)|埃氏筛法|未知算法。五种算法的效率依次递增。在同一个Prime.java文件中都可以测试。

求1亿以内的所有素数 JAVA多线程实现

代码 public class Main { public static void main(String[] args) throws InterruptedException { int n = 100000000; long startTime = System.currentTimeMillis(); List<Integ...

程序员大航子 2054

计算万亿以内质数个数的C语言程序代码

计算计算万亿以内质数个数的C语言程序代码,Visual Studio 2012

java输出素数

java输出1,000,000之内的所有素数 找出素数 for(n=3;n<=1000000;) { for(i=2;i<n;i++) { if(n%i0) break; if(in-1) { su[count]=n; count++; } } n+=2; } 加二是因为从3开始奇数有可能是素数,第一个循环遍历1000000个数,第二个循环看它是不是素数。 规范输出 System.out.print(“2 “); for(n=0,i=2;n<count;n++) { Syste

m0_58799163的博客 1956

最快求素数的算法,求100000000以下素数0.3秒

最快求素数的算法,求100000000以下所有素数0.3秒 , 在10000000以下的数中找到664579个素数,耗时53毫秒

用C语言实现素数筛法获取一亿(100000000)以内的全部素数-附件资源

用C语言实现素数筛法获取一亿(100000000)以内的全部素数-附件资源

1亿以内素数的个数_求一亿以内的素数

晚上由于要帮老师算一个数学猜想,需要一个素数集合,于是写了一个。思路:如果一个数不能被所有比它小的素数整除,那么它也是素数。MAX就是素数的上限,计算一亿以内的素数,总共用时171330毫秒,约为171秒。import java.util.ArrayList;public class Test{static ArrayList list = new ArrayList();//存储素数public...

weixin_30234101的博客 863

CH340驱动安装全攻略:从Windows到MacOS的避坑指南(2025最新版)

本文提供2025年最新版CH340驱动安装全攻略,涵盖Windows、MacOS和Linux三大操作系统。详细解析了驱动安装的核心原理、标准流程,并针对Windows设备管理器报错、MacOS系统安全限制等常见“坑点”提供了深度排错与解决方案,旨在帮助开发者快速稳定地完成USB转串口通信配置。

earth的博客 426

求一亿以内的回文质数(素数)

求一亿以内的回文素(质)数 先求质数再判断回文,效率低下;所以先构造回文数,再判断质数。 偶数位的回文数都能被11整除,自己证明去。所以,偶数位的回文数除了11都是合数。 观察偶数位的回文数,提取所有奇数位的数字,与提取所有偶数位的数字,正好是相反的顺序。 因此,偶数位数和等于奇数位数和,从而差等于0,而0能被11整除,因此这个回文数,可以被11整除 例:1331 13 31 或者 a...

南 墙 1万+

C语言 在合并编译 ( 多.c文件 ) 情况下 实现 linked list ( 链表 ) 教程 . 更新ing

写在前面  依旧是参考借鉴了 浙江大学 温老师 的视频教程,很不错,在中国大学MOOC上,强力推荐!  虽说有借鉴,但是能保证的是每一行代码都是我自己经过理解后手敲出来的,所以才来做了这部分的教程。  最后,带 * 字符是我个人觉得可以添加的功能,按理来讲是可以不看的,而且大概率是可以有更好的改进的。  PS: 文章还在更新,如果文字蓝了(有超链接),说明写完了,如果没蓝,说明我在开军舰.jpg 源代码:  这里→源代码. 第一步:前置工作  先说一下每一篇都会出现 main 函数的,stage1 只是给没

weixin_47287635的博客 526

测试人必看!正交表与Allpairs工具对比:如何选择最适合你的组合测试方案?

本文深入对比了正交表、PICT与Allpairs三种主流组合测试方案,帮助测试人员根据项目场景做出最佳选择。文章分析了各自的核心原理、优劣势及适用场景,特别强调了在涉及复杂约束时PICT工具的强大功能,并提供了从原理学习到CI/CD集成的实战选型指南。

weixin_29224309的博客 267

1亿以内素数的个数_这个程序运行了8个小时,求一亿以内的素数和超级素数.

#include #include long int prime(long int i) /*求素数的涵数*/{int x;for(x=2;x<=sqrt(i);x++)if(i%x==0)return 1; /*不是素数返回主调涵数1*/if(x>sqrt(i))return 0; /*是素数返回主调涵数0*/}long int answer()/*此涵数调用pr...

weixin_39947306的博客 154

基于ADS1299的8通道脑电采集系统硬件设计实战

生物电信号采集是医疗电子与可穿戴设备中的关键环节,微弱信号的高保真放大与数字化处理直接影响系统性能。高精度模数转换器与低噪声模拟前端设计成为工程实践的核心。ADS1299作为专用生物电测量芯片,集成多通道低噪声放大器与24位Δ-Σ ADC,广泛应用于脑电、心电等生理信号检测。本文基于ADS1299构建8通道脑电采集系统,详细阐述硬件架构、电源与参考设计、输入保护、PCB布局布线、固件SPI配置及数据读取,并结合实测数据分享噪声抑制与调试经验,为EEG采集设备开发提供完整参考。

weixin_29169505的博客 224

1亿以内素数的个数_[除余法]求一亿以内的质数

优化一最原始的除余法就是对于 $ k \in \lbrack 2,n \rbrack $ 把 $ \lbrack 2,k \rbrack $ 都试一遍,但这种效率显然非常低下,几乎大家都知道集合可以缩小为 $ \lbrack 2,\sqrt{k} \rbrack $,那么可以得到如下代码:for (i = 3; i <= n; i++) {for (j = 2; (j * j <= i...

weixin_29231027的博客 397

2025年软件测试职业院校技能大赛—ERP管理平台-基础信息管理商品管理测试用例

竞赛对接软件测试相关标准,以“ERP管理平台” 为被测系统,围绕软件测试领域的主流技术及工具,考查选手面 对实际问题的综合分析能力,对测试文档、测试用例的设计能力, 对单元测试、自动化测试、性能测试、接口测试等测试工具及方 法的掌握程度,检验选手团队协作能力、组织规划能力、方法运用能力等。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 323

YOLO11实战优化:长尾分布解决 | 引入Seesaw Loss配合YOLO11分类头,完美应对类别极其不平衡的现实业务场景

摘要: YOLO11在工业缺陷检测等长尾分布场景中面临尾部类别检测失效的问题,根源在于头部类别样本的负样本梯度压制了尾部类别的学习。传统方法如重采样、Focal Loss等效果有限。Seesaw Loss通过动态调整缓解因子和补偿因子,平衡类别间的梯度分布,结合YOLO11的解耦分类头、Anchor-Free设计和C2PSA/C3K2模块,显著提升尾部类别识别能力。文章详细解析了Seesaw Loss的数学原理,并提供了可直接集成到YOLO11的PyTorch实现代码,为长尾分布下的目标检测提供了实用解决方

2601_95807009的博客 253

c语言求n以内的素数,关于求N以内素数的一点小问题(N小于一亿)

该楼层疑似违规已被系统折叠隐藏此楼查看此楼我个人觉得第二个可能是因为内存不够的缘故,于是照着网上的办法弄了一个辅助布尔型数组来改进一下,然后就变成这样了……结果是2The total of the primes are: 1代码如下#include#include#define N 10000using namespace std;int main(){ofstream outfile;outf...

weixin_42507868的博客 114

CentOS 7 Linux yum 安装 Docker,解决 Docker 镜像拉取失败问题

本文详细介绍了在 CentOS 7 系统上通过 yum 安装 Docker 的完整流程,包括卸载旧版本、配置阿里云国内镜像源、安装 Docker 及其组件、设置日志限制等关键步骤。针对国内用户常见的 Docker 镜像拉取失败问题,提供了两种实用解决方案:配置镜像加速器或通过代理访问官方源,并附带验证方法与排错指南,帮助读者高效完成 Docker 环境部署。

寒水馨 · 轻量级技术文档 · hanshuixin.org 1718

求n以内的素数和c语言,关于求N以内素数的一点小问题(N小于一亿)

该楼层疑似违规已被系统折叠隐藏此楼查看此楼我个人觉得第二个可能是因为内存不够的缘故,于是照着网上的办法弄了一个辅助布尔型数组来改进一下,然后就变成这样了……结果是2The total of the primes are: 1代码如下#include#include#define N 10000using namespace std;int main(){ofstream outfile;outf...

weixin_29357339的博客 148

使用 Azure DevSecOps 和 AIOps 构建可扩展且安全的多区域金融科技 SaaS 平台

这家虚构的金融科技 SaaS 组织在 Microsoft Azure 上构建了一个现代化的多区域架构,以实现高可用性、主动安全性和简化的 DevSecOps 工作流。如果您是 DevOps 从业者、SRE 专业人士或致力于创建弹性、可扩展且安全的金融科技解决方案的技术领导者,您将从中获得可直接应用于您自身项目的见解和经验教训。与大多数快速扩张的金融科技公司一样,他们需要确保不间断的正常运行时间、坚不可摧的安全性以及快速的功能交付,以满足全球用户群的需求。即使是短暂的中断也会损害用户的信心和忠诚度。

介绍AWS Azure GCP devops Terraform 等技术 1298

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

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

用c语言求n以内的素数,关于求N以内素数的一点小问题(N小于一亿)

该楼层疑似违规已被系统折叠隐藏此楼查看此楼我个人觉得第二个可能是因为内存不够的缘故,于是照着网上的办法弄了一个辅助布尔型数组来改进一下,然后就变成这样了……结果是2The total of the primes are: 1代码如下#include#include#define N 10000using namespace std;int main(){ofstream outfile;outf...

weixin_33281940的博客 184

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

求n以内的素数的C语言,关于求N以内素数的一点小问题(N小于一亿)

该楼层疑似违规已被系统折叠隐藏此楼查看此楼我个人觉得第二个可能是因为内存不够的缘故,于是照着网上的办法弄了一个辅助布尔型数组来改进一下,然后就变成这样了……结果是2The total of the primes are: 1代码如下#include#include#define N 10000using namespace std;int main(){ofstream outfile;outf...

weixin_33669611的博客 159

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

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

精雕软件(JDpaint) 5.5 绿色版

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

上一篇: 输出回文数字
下一篇: 蓝桥杯真题:C村建k个邮局
KingLearnJava
博客等级 码龄12年 93粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值