您的位置:首页 > 编程语言 > Java开发

(java)Count Primes

2016-01-08 10:38 369 查看
Count the number of prime numbers less than a non-negative number, n.

思路:设置一个标志位数组flag[i],表示i是否已经被标记了。

循环sqrt(n) 次,把i的倍数的全部标记上。

最后没有标记的就是素数。比如n=15

把2的倍数 4,6,8,10,12,14标记上

把3的倍数 6 9,12;

剩下的2,3,5,7,11,13就是素数

代码如下(已通过leetcode)

public class Solution{

public int countPrimes(int n){

boolean[] flag=new boolean
;

int count=0;

for(int i=2;i<n;i++)

flag[i]=false;

for(int i=2;i<Math.sqrt(n);i++){

if(!flag[i]){

for(int j=i;j*i<n;j++)

flag[j*i]=true;

}

}

for(int i=2;i<n;i++) {

if(!flag[i]) count++;

}

return count;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: