`
itoracja
  • 浏览: 142786 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

求比任一数小的所有素数算法

    博客分类:
  • java
阅读更多
   
package org.basic.test;import java.util.arraylist;import java.util.list;public class testprimer {	public static void main(string[] args) {		int scope = 5000000;		system.out.println("scope=" + scope);		testprimer tp = new testprimer();		long time1 = system.currenttimemillis();		list<integer> primers1 = tp.getprime1(scope);		long time2 = system.currenttimemillis();		list<integer> primers2 = tp.getprime2(scope);		long time3 = system.currenttimemillis();		system.out.println("算法一耗时:" + (time2 - time1) + " ms");		system.out.println(primers1.size());		//tp.print(primers1);		system.out.println("算法二耗时:" + (time3 - time2) + " ms");		system.out.println(primers2.size());		//tp.print(primers2);	}		public void print(list<integer> primers){		for(integer i : primers){			system.out.print(i + ", ");		}	}	public list<integer> getprime1(int number) {		list<integer> primes = new arraylist<integer>();		primes.add(2);		for (int i = 3; i <= number; i++) {			if (isprime1(primes, i)) {				primes.add(i);			}		}		return primes;	}	//只要i不能被比i小的所有素数整除i就是素数。	public boolean isprime1(list<integer> primes, int i) {		for (int prime : primes) {			if(prime * prime > i){				return true;			}			if (i % prime == 0) {				return false;			}		}		return true;	}	public list<integer> getprime2(int number) {		list<integer> primes = new arraylist<integer>();		primes.add(2);		for (int i = 3; i <= number; i++) {			if (isprime2(i)) {				primes.add(i);			}		}		return primes;	}		public boolean isprime2(int i) {		for (int j = 2; j < math.sqrt(i) + 1; j++) {			if (i % j == 0) {				return false;			}		}		return true;	}  }scope=5000000算法一耗时:2953 ms348513算法二耗时:7031 ms348513
  
0
0
分享到:
评论

相关推荐

    非完美算法初探——任一恒.doc

    有时候,单一算法无法满足所有需求,这时可以考虑算法的组合使用,如贪心算法与随机算法的结合,或是随机算法与抽样测试法的并用,以求取最佳的综合效果。 总之,非完美算法为我们提供了一种实用的问题求解框架,它...

    JAVA中判断一个整数是否为质数

    在实际应用中,检查一个数是否为质数不仅对加密算法、密码学等领域至关重要,而且对于提高程序的逻辑思维能力和算法优化也有很大帮助。 ### 关键知识点 #### 1. 质数定义与特性 - **定义**:质数是指在大于1的...

    非完美算法初探——任一恒1

    《非完美算法初探——任一恒1》 在计算机科学中,我们通常追求设计出能够完美解决问题的算法。然而,在实际应用中,许多问题的完美解决方案可能过于复杂,甚至在时间和空间资源上不可接受。因此,非完美算法在实践...

    C++ 实现求小于n的最大素数的实例

    因此,若N-K可以被[2,n)中的任一素数整除,它就不是我们要找的最大素数。 ### 枚举核心详解 在枚举核心部分,我们将详细探讨如何寻找下一个素数。通常的做法是先列出所有小于当前数的素数,并用它们去尝试除以当前...

    单片机C语言常用算法

    基本思想是:n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,则为一组解。可以利用上面的prime函数,验证哥德巴赫猜想的程序代码如下: 这些算法都是单片机C语言常用算法的基础...

    对任一正整数n,按从小到大的顺序输出所有不超过2^n-1的梅森数-C语言代码

    在这个程序中,`isPrime`函数用于判断一个数是否为素数,`printMersenneNumbers`函数则遍历从2到n的所有可能的p值,计算对应的梅森数并打印出来。用户可以通过输入n值来更改查找范围。 运行这个程序时,确保你有一...

    C/C++基础算法全集

    这种算法通过逐个标记小范围内的合数,从而筛选出所有的素数,极大地提高了检测大数素性的效率。 接下来,我们探讨图论算法。图论是数学的一个分支,研究图的性质,其中图是由节点(顶点)和连接节点的边组成的数学...

    C C++算法实例.c

    (1) n个活动每个活动有一个开始时间和一个结束时间,任一时刻仅一项活动进行,求满足活动数最多的情况。 解:按每项活动的结束时间进行排序,排在前面的优先满足。 (2)会议室空闲时间最少。 (3)每个客户有...

    Python求出0~100以内的所有素数

    在主循环中,对于每一个数i,内部循环检查从2到sqrt(i)之间的所有数,如果找到一个能整除i的数,则跳出循环,否则打印该数。 #### 总结 通过上述Python和C语言的示例代码,我们可以看到求解素数问题的多种方法。...

    C#,阿格里数(Ugly Number)的多种算法与源代码

    各种数据结构、算法及实用的C#源代码.C#,阿格里数(Ugly Number)的多种算法与源代码 阿格里数,即丑数(Ugly Number)、逊数(Humble Number)。 一般而言:把只包含质因子2,3和5的数称作丑数(Ugly Number)。...

    40例java经典算法研究.pdf

    - **数学运算**:在素数判断和水仙花数的算法中,运用了整除和求余数的运算来完成数学上的逻辑判断。 以上即是《40例java经典算法研究》文档中提及的算法知识点。通过这40个例题的分析与实现,读者可以系统地学习...

    一些有用的算法

    重复这一过程,直到处理完所有数。 #### 实现代码分析 ```c bool *getSieve(int max) { static bool sieve[(PRIME_MAX &gt;&gt; 1) + 1]; int i, j, imax = sqrt(max); for (i = 3; i ; i += 2) if (!sieve[i &gt;&gt; 1]...

    验证哥德巴赫猜想:一个大偶数可以分解为两个素数之和

    这可以通过对每个偶数减去从2到它自身减去2的所有可能的质数来实现,然后检查剩下的数是否也为质数。如果找到一对质数使得它们的和等于原数,那么我们就找到了一个符合哥德巴赫猜想的例子。 例如,对于600,我们...

    VB程序设计的常用算法.pdf

    基本思想是:n 为大于等于 6 的任一偶数,可分解为 n1 和 n2 两个数,分别检查 n1 和 n2 是否为素数,如都是,则为一组解。如 n1 不是素数,就不必再检查 n2 是否素数。先从 n1=3 开始,检验 n1 和 n2(n2=N-n1) 是...

    输出100到200之间的全部素数

    通过vc++6.0,采用如下算法:让m被2到根号m除,如果m能被2到根号m之中任何一个整数整除,...然后才终止循环,在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2到k之间任一整数整除过,因此输出“是素数”。

    经典算法大全

    基本思想是从2开始,将所有2的倍数标记为合数,然后继续下一个未被标记的数(即下一个质数),将其所有倍数标记为合数,以此类推,直到检查完所有数为止。最后未被标记的数即为质数。 以上只是经典算法大全中的一小...

    c语言常见算法.pdf

    验证哥德巴赫猜想的基本思想是:n 为大于等于 6 的任一偶数,可分解为 n1 和 n2 两个数,分别检查 n1 和 n2 是否为素数,如都是,则为一组解。如 n1 不是素数,就不必再检查 n2 是否素数。先从 n1=3 开始,检验 n1 ...

    2021高中数学 1.1.1算法的概念课件 新人教A版必修3.docx

    如果检查完所有小于等于n的平方根的数后,没有找到能整除n的数,则n为质数。 算法的这些特性,即步骤的明确性、有限性以及可重复性,使其成为了处理数学问题的强大工具。它不仅在数学逻辑推演中发挥作用,还在...

    C语言程序设计:第5章 常用数值计算算法及其程序设计

    最简单的素数判断算法:如果n&gt;2且n不能被2~n-1之间的任一个整数整除,n就是素数。 程序实现: for (t=1,i=2;t&&i; i++) if(n%i==0)t=0; if(t)printf(“%d is prime”,n); 改进后的素数判断算法:如果n&gt;2且n不能...

    中科大 算法导论 课件(全套14)有关数轮的算法

    ### 中科大 算法导论 课件(全套14)有关数论的算法 #### 初等数论概念 在数论领域中,初等数论是一门研究整数及其性质的基础学科。本章节主要介绍了以下几个关键概念: 1. **整除性和约数**:整数\( d \)能整除...

Global site tag (gtag.js) - Google Analytics