Count Primes

来源:互联网 发布:淘宝回复差评专业术语 编辑:程序博客网 时间:2024/05/21 06:02

Count the number of prime numbers less than a non-negative number, n.

思路:把2,3,5这种质数的倍数,全部标记成非质数,然后最后count一遍。计算质数可以用sqrt,来减少范围,这里的sqrt是因为前面的质数能够去掉的数字已经足够去掉所有小于n的重复数,大于sqrt的质数所组成的数已经不在这个n范围里面了。所以可以用sqrt来减少计算,这跟判断质数有区分。

public class Solution {    public int countPrimes(int n) {        if(n<0 || n<=2) return 0;        boolean[] isPrime = new boolean[n];        Arrays.fill(isPrime,true);                for(int i=2; i<Math.sqrt(n); i++){            if(isPrime[i]){                for(int j=2; j*i<n; j++){                    isPrime[j*i] = false;                }            }        }                int count = 0;        for(int i=2; i<n; i++){            if(isPrime[i]){                count++;            }        }        return count;    }}


0 0
原创粉丝点击