`
gygwoaini
  • 浏览: 6183 次
  • 性别: 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());
    } 

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

相关推荐

    中科大算法分析与设计概率算法部分的源码

    概率算法求8皇后问题与概率算法输出1000万以内的质数等带有分析文档

    java50道经典练习题.docx

    找出1000以内的所有完数,即一个数等于其所有真因子(除了自身之外的因子)之和。 **知识点解析:** - **完数概念**:特殊的数学数列。 - **因子计算**:找出一个数的所有因子。 - **循环结构**:使用循环结构遍历1...

    Java初学者基本习题50道

    遍历10万以内的数,进行平方根判断。 14. **日期计算**: 输入年月日,判断这是当年的第几天。要考虑闰年,以及1月和2月的天数。 15. **整数排序**: 输入三个整数x、y、z,按从小到大排序。可以使用冒泡排序或...

    做程序员必看的基础程序题

    - **解决方案**:可以在一定的范围内(例如10万以内)进行搜索。对于每一个数字,首先检查它加上100后的结果是否为完全平方数,如果是,则进一步检查加上268后的结果是否也为完全平方数。这可以通过取平方根并检查...

    project-euler:欧拉计划练习

    问题3要求找到100万以内最大的梅森素数,排序和搜索算法可能会派上用场。 10. **数学归纳法**:证明某些规律的正确性。 在项目"project-euler-master"中,你可以期待找到一系列JavaScript代码文件,每个文件对应一...

    C#基础编程练习题.doc

    编程找出1000以内的所有完数。 **解析**: - 遍历1至1000之间的每一个数。 - 对于每个数,找到它的所有真因子并求和。 - 检查因子之和是否等于原数。 **示例代码**: ```csharp void FindPerfectNumbers() { for ...

Global site tag (gtag.js) - Google Analytics