`
gygwoaini
  • 浏览: 6026 次
  • 性别: Icon_minigender_1
  • 来自: 绵阳
文章分类
社区版块
存档分类
最新评论

关于求1000万以内所有质数的快速算法

 
阅读更多
今天重新浏览了之前的一个老帖,帖子的基本内容大概是讨论求100以内质数(素数)的方法,随意看了一下,自己随意写了一个,稍稍优化一下就不管了。今天突然想起又去仔细看了看,帖子后来变成讨论求出1000万以内所有质数的算法。
再用自己的程序跑了一下,发现用时18秒,惭愧啊。
找了一个高手的回答跑了一下,发现用时400毫秒。。。差距啊。

他的代码如下:
static void ListPrime(int n) { 
        /**
         * false为质数,true为合数
         */ 
        boolean[] primeList = new boolean[n + 1]; 
 
        for (int i = 2; i <= n; i++) { 
            if (!primeList[i]) { 
                int j = i * i; 
                if (j > n) 
                    break; 
                if (i > 2) { 
                    while (j <= n) { 
                        primeList[j] = true; 
                        j = j + i + i; 
                    } 
                } else { 
                    while (j <= n) { 
                        primeList[j] = true; 
                        j = j + i; 
                    } 
                } 
            } 
        } 
        List<Integer> ret = new ArrayList<Integer>(10000); 
        ret.add(2); 
        for (int i = 3; i <= n;) { 
            if (!primeList[i]) { 
                //System.out.print(i + " ");   
                ret.add(i); 
            } 
            i += 2; 
        } 
        System.out.println(ret.size());
    } 

中间的核心代码没有看懂,先记下来,在琢磨琢磨
分享到:
评论

相关推荐

    java script求出一千以内的质数

    用javajava script求出一千以内的质数

    求1000以内的质数C++程序

    根据给定的文件信息,我们可以总结出以下与“求1000以内的质数C++程序”相关的知识点: ### 一、质数定义及性质 #### 1. 质数定义 - **质数**(Prime Number)是指在大于1的自然数中,除了1和它本身以外不再有其他...

    1000以内质数的输出

    1000以内的质数:&quot;+str ; }"&gt;public class Test public static void main String [] args { String str &quot;&quot;; for int i 1; i &lt; 1000; i++ { for a 2; a &lt; int i 2; a++ { if i % a 0 { ...

    用python求100以内质数

    用python求100以内质数

    求质数的算法

    埃拉托斯特尼筛法是一种高效的找出所有小于给定上限n的质数的算法。基本步骤如下: - 初始化一个大小为n的布尔数组,所有元素初始化为true,表示它们可能是质数。 - 从2开始,将所有2的倍数标记为非质数(即数组...

    求100以内的质数程序

    c++程序求100以内的质数,很简单的就是要会质数的函数就可以,赚点分数 希望和高手学习

    求1~1000质数,算法实现相对简单

    计算1~1000的质数的程序,实现的算法比较简单。

    用汇编语言求1000以内的质数

    根据给定的文件信息,我们可以总结出以下与“用汇编语言求1000以内的质数”相关的知识点。 ### 汇编语言简介 汇编语言是一种低级编程语言,它为每条机器指令提供一个助记符,使得程序员能够更容易地编写程序,并且...

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

    标题 "50000000(五千万)以内质数(素数)3001134(约三百万)个.zip" 暗示了这个压缩包包含了一个文本文件,列出了从1到50,000,000之间所有约300万个质数。描述中的 "普通pc演算(i7处理器)" 表明这些质数是通过一台搭载...

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

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

    1000以内质数查询-控制台程序

    1000以内质数查询-控制台程序1000以内质数查询-控制台程序1000以内质数查询-控制台程序

    c语言100以内质数

    此外,这个题目还可以引导学习者探索更高效的质数判断方法,比如埃拉托斯特尼筛法,这是一种更快速找出一定范围内所有质数的算法。通过不断优化算法,可以提高程序的运行效率,这也是计算机科学中的一大挑战。 总的...

    一亿(100000000)以内的质数表.rar

    一亿以内的质数表 整理出来了

    java输出1到100以内所有的质数

    java输出1到100以内所有的质数java输出1到100以内所有的质数java输出1到100以内所有的质数java输出1到100以内所有的质数java输出1到100以内所有的质数java输出1到100以内所有的质数java输出1到100以内所有的质数java...

    算法-求一亿以内的回文质数(素数).rar

    或者,利用质数筛法(如埃拉托斯特尼筛法)提前筛选出所有1亿以内的素数,再进行回文判断。 这个任务不仅涉及基础的算法和数据结构,还考验了编程效率和内存管理。通过解决这个问题,可以提升编程技巧,理解并实践...

    Prime_100000以内的所有质数的输出_

    标题 "Prime_100000以内的所有质数的输出_" 提供的信息是,这个项目或程序的目的是找出并打印出100000以内的所有质数。质数是大于1且除了1和它本身以外没有其他正因数的自然数。这个任务可能涉及到两种不同的算法或...

    初等数论中输出n以内的质数程序

    在计算机编程中,输出n以内的所有质数是一个常见的问题,对于学习C语言的初学者来说,这是一个很好的练习项目。 首先,我们需要理解如何判断一个数是否为质数。最基础的方法是试除法:对于每个小于等于n的数i,检查...

    Java:打印出100以内的质数

    在这个任务中,我们将探讨如何使用Java来打印出100以内的所有质数。 首先,我们需要了解找到质数的基本算法。一种常见的方法是“埃拉托斯特尼筛法”(Sieve of Eratosthenes),但在这里,由于范围较小(1到100),...

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

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

    如何快速记忆100以内的质数表参考.doc

    如何快速记忆100以内的质数表参考.doc

Global site tag (gtag.js) - Google Analytics