`
tenght
  • 浏览: 47067 次
社区版块
存档分类
最新评论

[java]埃拉托斯特尼筛法检定素数

阅读更多

埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。

给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。

java源码:

package test1.number;

public class Eratosthenes {
	public static void main(String[] args) {
		int max = 20; 
		try {
			max = Integer.parseInt(args[0]);
		} 
		catch (Exception e) {
		} 

		boolean[] isprime = new boolean[max + 1];

		for (int i = 0; i <= max; i++)
			isprime[i] = true;

		isprime[0] = isprime[1] = false;

		int n = (int) Math.ceil(Math.sqrt(max)); 

		for (int i = 0; i <= n; i++) {
			if (isprime[i]) 
				for (int j = 2 * i; j <= max; j = j + i)
					isprime[j] = false; 
		}

		int largest;
		for (largest = max; !isprime[largest]; largest--); 

		System.out.println("The largest prime less than or equal to " + max
				+ " is " + largest);
	}

}

运行结果:


分享到:
评论

相关推荐

    基于MPI实现埃拉托斯特尼筛法及性能优化实验报告.docx

    基于MPI实现埃拉托斯特尼筛法及性能优化实验报告.docx

    基于MPI实现埃拉托斯特尼筛法及性能优化【100012030】

    埃拉托斯特尼是一位古希腊数学家,他在寻找整数N以内的素数时,采用了一种与众不同的方法:先将2-N的各数写在纸上: 在2的上面画一个圆圈,然后划去2的其他倍数;第一个既未画圈又没有被划去的数是3,将它画圈,再...

    筛法找质数

    使用埃拉托斯特尼筛法寻找质数的C++函数

    埃拉托斯特尼筛法 注释.c

    埃拉托斯特尼筛法 注释.c

    埃拉托斯特尼筛子和另外一种求素数的JAVA写的算法

    埃拉托斯特尼筛子和另外一种求素数的JAVA写的算法,经过实际的测试,在不同的数据区内,用不同的算法的响应时间是不同的 ,最后我综合了临界区域的实际计算,写了一个比较可靠的方法。

    Leetcode 计数质数.sln

    在C#中,一个常见的解决方案是使用埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种高效的算法,用于找出小于给定数的所有质数。 埃拉托斯特尼筛法原理 埃拉托斯特尼筛法的基本思想是从最小的质数开始,逐个...

    埃氏筛法论文.pdf

    埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。

    C/C++利用筛选法算素数的方法示例

    筛选法又称筛法,是求不超过自然数N(N&gt;1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。 具体做法是: 先把N个自然数按次序排列起来。1...

    C#,质数(Prime Number)的四种算法源代码和性能比较

    质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;...(1)质数筛(改进的埃拉托斯特尼筛法); (2)暴力法; (3)米勒-罗宾随机算法; (4)改进的米勒-罗宾随机算法;

    python素数筛选法浅析

    一个比较常见的求素数的办法是埃拉托斯特尼筛法(the Sieve of Eratosthenes) ,说简单一点就是画表格,然后删表格,如图所示:  从2开始依次往后面数,如果当前数字一个素数,那么就将所有其倍数的数从表中删除...

    2018081309003-董文龙-MPI1

    1. 使用 MPI 编程实现埃拉托斯特尼筛法并行算法 2. 对程序进行性能分析以及调优 1. 安装部署 MPI 实验环境,并调试完成基准代码,并实测在不同进程规

    分布式并行计算-MPI实验指导书1

    2. 使用MPI编程实现埃拉托斯特尼筛法 3. 掌握并行程序性能分析以及优化的方法 3. 按要求给出程序运行结果截图,加速比取消,并行效率曲线,并分析原因 4.

    Python素数判断类

    功能及特点描述: 1.python素数判断类 2.素数判断的多种实现算法 3.指定范围内数据的素数查找与输出 ...包括暴力判断、平方根暴力判断、素数表筛选、埃拉托斯特尼(Eratosthenes)筛法和欧拉(Euler)筛法五种实现方式

    c++素数筛选法

    本文讲的是筛选法的C++实现, 筛选法又称筛法,是求不超过自然数N(N&gt;1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。

    ACM常⽤模板(+模板题)(基础)

    ⼤数、⼆分、枚举排列、⼦集⽣成、n皇后回溯、并查集、树状数组、KMP,unday,BM、01背包,完全背包、最⻓(不)上升或下降⼦序列、最⻓公共⼦...埃拉托斯特尼筛法 唯⼀分定理 扩展欧⼏⾥得 欧拉函数 快速幂 矩阵快速幂

    筛选法的C++实现

    介绍:筛选法又称筛法,是求不超过自然数N(N&gt;1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。 具体做法是:先把N个自然数按次序排列起来...

Global site tag (gtag.js) - Google Analytics