`

计算素数优化

    博客分类:
  • java
阅读更多

列出小于1000的素数,对于这样的算法好多人都会,但对于编程人员,要对这样的算法做优化,会有不同的算法了,以下为我自己的两种算法做比较:

 

算法一,大众算法。用两个循环法。

public class Test {

	public static void main(String[] args) {
		
		long start = System.currentTimeMillis();
		
		for (int i = 2; i < 100000; i++) {
			if(prime(i))
				System.out.println(i);
		}

		
		System.out.println("take times : " + (System.currentTimeMillis() - start));
	}
	
	private static boolean prime(int n){
		
		for (int i = 2; i < n; i++) {
			if(n % i == 0)
				return false;
		}
		
		return true;
	}

}

 

算法二,优化后的算法

public class Test2 {

	public static void main(String[] args) {
		
		long start = System.currentTimeMillis();
		
		for (int i = 2; i < 100000; i++) {
			if(prime(i))
				System.out.println(i);
		}

		
		System.out.println("take times : " + (System.currentTimeMillis() - start));
	}
	
	private static boolean prime(int n){
		
		if(n % 2 == 0)
			return n == 2;
		
		for (int i = 3; i*i <= n; i = i + 2) {
			if(n % i == 0)
				return false;
		}
		
		return true;
	}


}

 

以上两个算法比较(数据量越大结果对比越明显):

elipse下运行计算 算法一耗时(ms) 算法二耗时(ms)
小于1000 7 5
小于100000 4590 237
分享到:
评论
2 楼 tombigun 2011-10-09  
qiii2006 写道
double y = Math.sqrt(n);
        for (int i = 3; i <= y; i = i + 2) {
            if (n % i == 0)
                return false;
        }


还能更快点。



对,能减小i*i <= n这运算
1 楼 qiii2006 2011-09-19  
double y = Math.sqrt(n);
        for (int i = 3; i <= y; i = i + 2) {
            if (n % i == 0)
                return false;
        }


还能更快点。

相关推荐

    Python 计算从1-N(N可以任何数)内的素数(并行计算、多线程优化计算)

    Python 计算从1-N(N可以任何数)内的素数(并行计算、多线程优化计算)

    判断质数的优化算法C代码实现

    在计算机科学中,判断一个数是否为质数的算法对于加密、编码和其他计算密集型任务至关重要。传统的判断质数的方法是试除法,但这种方法在处理大数时效率较低。针对这一问题,我们可以采用优化算法来提高效率,特别是...

    质数(素数)计算

    质数(素数)是数学领域的一个重要概念,指大于1且仅能被1和它自身整除的正整数。在计算机科学中,尤其是在密码学、算法设计和数论等领域,质数计算扮演着至关重要的角色。这篇讨论将聚焦于如何在Delphi编程环境中...

    素数计算

    1. **素数判断算法**:计算素数最基础的方法是“试除法”。对于一个数n,我们从2开始尝试除到其平方根,如果没有找到能整除n的数,那么n就是素数。优化后的算法,如埃拉托斯特尼筛法(Sieve of Eratosthenes),则能...

    素数检测优化

    总的来说,素数检测的优化涉及到算法选择、数据结构的使用以及对计算资源的有效利用。通过理解和应用这些优化技术,我们可以在保持正确性的同时大大提高代码执行效率。在实际编程中,结合具体需求和环境,选择合适的...

    并行计算求素数个数(java、OpenMP、MPI、.NET、MFC、Windows Api)

    并行计算求素数个数包括java、OpenMP、MPI、.NET、MFC、Windows Api等方法 并行计算求素数个数包括java、OpenMP、MPI、.NET、MFC、Windows Api等方法

    计算素数个数的一个新公式

    根据提供的文件信息,我们可以了解到文章《计算素数个数的一个新公式》由作者许作铭和罗贵文撰写,旨在介绍和证明一种计算素数个数的新公式。该公式的精确度高于素数定理。由于直接引用了大量复杂的公式和符号,这...

    LabView 计算整数N内所有的素数

    在这个特定的示例中,“LabView 计算整数N内所有的素数”指的是利用LabView来编写一个程序,该程序能够找出从1到一个指定整数N之间所有素数。 素数是大于1且除了1和它自身以外没有其他正因数的自然数。判断一个数...

    使用 Matlab 计算 10000000 以内数的素数。由于 for 循环很慢,需要算法优化。.zip

    总的来说,通过理解和应用算法优化,如埃拉托斯特尼筛法,可以在 MATLAB 中高效地解决计算大量素数的问题。这对于学习和掌握数值计算、算法分析以及 MATLAB 编程技巧是非常有益的。同时,这个过程也能帮助你更好地...

    质数的计算,delphi源码

    2. 质数判断算法,如埃拉托斯特尼筛法或其他更优化的方法。 3. GUI编程,使用Delphi的表单设计工具创建用户界面,并与代码逻辑交互。 4. 文件操作,理解不同类型的项目文件以及它们在项目中的作用。 5. 编程逻辑,...

    50000000(五千万)以内质数(素数)3001134(约三百万)个.zip

    描述中的 "普通pc演算(i7处理器)" 表明这些质数是通过一台搭载i7处理器的个人计算机计算得出的,这通常涉及到算法优化和计算效率的问题。 质数是大于1且只有1和其本身两个正因数的自然数。它们在数论、密码学和许多...

    求解第N个质数(第N个素数)vs2010项目

    这里我们关注的是一个名为“求解第N个质数(第N个素数)vs2010项目”的项目,该项目使用了Visual Studio 2010作为开发环境。这个项目的目标是高效地找到序列中的第N个质数,这里的N可能是任意正整数。项目中采用的...

    cPP.rar_C语言计算素数

    在本压缩包“cPP.rar_C语言计算素数”中,包含了一个关于C++编程的实践案例,主要涉及两个知识点:一是如何用C++编写程序来判断并输出100到200之间的素数,二是如何定义一个平面点类(Point)并计算两点之间的距离。...

    素数筛选法优化_2

    ### 素数筛选法优化方法详解 #### 一、引言 素数筛选法是一种常用的算法,用于找出一定范围内的所有素数。传统的素数筛选法(如埃拉托斯特尼筛法)虽然有效,但在处理大规模数据时可能会显得效率低下。本文介绍了...

    stc15f104e素数计算

    描述中提到的“stc15f104e芯片计算素数,并同步显示在LCD上”,意味着项目不仅涉及数值计算,还涉及到人机交互界面。计算素数是基础数学的一个概念,素数是指大于1且除了1和其本身外没有其他正因数的自然数。在这个...

    1亿以内的质数(共5761455个数).txt_1亿以内素数的个数

    1. **算法优化**:如何更快速、准确地检测大范围内的质数仍然是一个重要的研究方向。 2. **理论突破**:关于质数分布的一些未解之谜,如孪生素数猜想、哥德巴赫猜想等,一直是数学家们努力的方向。 通过以上内容...

    ConsoleApplication1_质数数目计算_

    总的来说,"ConsoleApplication1_质数数目计算_"项目是一个使用筛法计算一定范围内质数数量的C#程序,它可能通过BitArray优化了内存使用和计算速度。不过,如果需要显示质数列表,就需要扩展代码以输出这些信息。...

    易语言素数计算源码.rar

    "易语言素数计算源码.rar" 是一个包含易语言编写的程序源代码,用于计算素数的示例。素数是数学中的一个重要概念,指大于1且仅能被1和自身整除的自然数。素数计算在密码学、计算机科学等领域有着广泛的应用。 在...

    素数筛选法优化(改)

    通过上述优化措施,可以有效地减少素数筛选过程中的计算量,从而显著提高算法的执行效率。尽管进一步排除更多较小素数的倍数可以进一步提升效率,但这也会带来算法实现复杂性的增加。因此,在实际应用中需要根据具体...

Global site tag (gtag.js) - Google Analytics