美文网首页
【算法】统计素数个数 - 埃筛法

【算法】统计素数个数 - 埃筛法

作者: 王月亮17 | 来源:发表于2024-04-03 11:26 被阅读0次

    题目

    传入一个数字,统计小于这个数字的素数个数。

    原理

    素数只能被1和它本身整除,所以小的数能够通过乘法计算出来的数都不是素数。埃筛法就是不断地用小的数做乘法标记出哪些数不是素数,从而减少遍历次数。

    代码

        public static void main(String[] args) {
            int count = countPrime(100);
            System.out.println(count);
        }
    
        private static int countPrime(int n) {
            boolean[] notPrime = new boolean[n];
            int count = 0;
            for (int i = 2; i < n; i++) {
                if (!notPrime[i]) {
                    count++;
                    for (int j = 2 * i; j < n; j+=i) {
                        notPrime[j] = true;
                    }
                }
            }
            return count;
        }
    

    相关文章

      网友评论

          本文标题:【算法】统计素数个数 - 埃筛法

          本文链接:https://www.haomeiwen.com/subject/bfegtjtx.html