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

[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

    **埃拉托斯特尼筛法**是一种古老的算法,用于找出一定范围内所有的素数。该算法的核心思想是从2开始,把2的所有倍数标记为合数,接着找到下一个未被标记为合数的数(即3),并将其所有倍数标记为合数,以此类推直到...

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

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

    筛法找质数

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

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

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

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

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

    用C语言思想改写的用筛法求质数程序.rar_筛法 质数

    筛法,又称埃拉托斯特尼筛法,是由古希腊数学家埃拉托斯特尼提出的一种寻找所有小于给定数n的质数的算法。它的基本思路是:从2开始,将2的所有倍数(即2的倍数)标记为非质数,然后找到下一个未被标记的数,继续标记...

    用筛法与不要筛法求素数的比较

    筛法是求解素数的一种高效算法,最早由古希腊数学家埃拉托斯特尼提出。该算法的基本思想是从2开始,依次将2的倍数标记为合数,然后找到下一个未被标记的数(即3),将其倍数标记,如此循环,直到所有小于或等于给定...

    一种快速的素数筛法的c语言实现

    这里我们关注的是"一种快速的素数筛法的C语言实现",这通常指的是埃拉托斯特尼筛法(Sieve of Eratosthenes)。埃拉托斯特尼筛法是一种古老而有效的算法,用于找出所有小于给定数N的素数。 首先,让我们理解...

    顺序表和单链表筛素数(数据结构)

    在“单链表输出素数.cpp”这个文件中,我们可以预见到它实现了上述的单链表筛选素数的过程,包括创建链表、初始化所有数为素数、应用埃拉托斯特尼筛法以及遍历链表输出素数。而“顺序表筛素数.cpp”则可能使用了顺序...

    P(xe,)筛法与素数分布定理

    标题和描述中提到的"P(xe,)筛法与素数分布定理",说明本文的主旨是介绍一种新的筛法,以及利用这种筛法推导出的素数分布定理。素数分布定理是研究素数在自然数中分布规律的一个重要工具,它的研究对于数学家理解素数...

    快速素数筛法

    快速素数筛法相比于早期的埃拉托斯特尼筛法等方法,具有更高的效率和更快的速度,尤其适合处理大数据量的素数筛选任务。 素数是自然数中的基本元素,对于密码学、编码理论和许多数学问题都有着重要的应用。例如,在...

    Leetcode 计数质数.sln

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

    分段筛法c语言源代码

    3. **分段筛选**:对每个段,使用埃拉托斯特尼筛法找出素数,并将结果存入数组。这一步骤可以通过递增地标记合数来实现。 4. **跨段处理**:利用已知的素数,标记跨段的合数。这一步通常涉及线性扫描,对于每个素数...

    求质数的算法

    - **效率**:埃拉托斯特尼筛法在处理大量质数时效率更高,因为它只需要一次遍历就能找出所有质数,而试除法需要对每个数进行单独的判断,时间复杂度较高。 - **适用场景**:埃拉托斯特尼筛法适合一次性找出一定范围...

    第7章 数组-7数组的其他应用——筛法求素数1

    然而,筛法求素数提供了更高效的方式,即埃拉托斯特尼筛法(Sieve of Eratosthenes)。这种方法通过创建一个数组`a`来表示每个数是否是素数,初始化时数组的每个元素都表示相应的数值。从2开始,将2的倍数全部标记为...

    判断素数的三种方法.pdf

    判断素数的方法主要有试除法、优化的试除法和筛法,特别是埃拉托斯特尼筛法。以下将详细介绍这三种方法。 1. 试除法 试除法是最直观的判断素数的方法。对于给定的自然数n(n &gt; 1),我们遍历所有小于n的正整数,...

    matlab 求素数 (四种方法)

    埃拉托斯特尼筛法是一种经典的求素数的方法,通过逐步筛选掉非素数来得到所有小于给定数的素数。在MATLAB中,可以创建一个全为1的布尔数组,然后从2开始,每次找到一个未被筛掉的数(即当前的素数),就将其倍数...

    Java输出n以内的所有素数

    素数筛是一种寻找素数的高效算法,最著名的莫过于埃拉托斯特尼筛法(Sieve of Eratosthenes)。该算法的基本思想是:从2开始,依次将每个素数的倍数标记为合数,最后剩下的未被标记的数就是素数。 二、Java实现素数...

Global site tag (gtag.js) - Google Analytics