Description:
Count the number of prime numbers less than a non-negative number, n.
统计小于非负整数n的素数的个数。
使用见埃拉托色尼筛法。
算法实现类
public class Solution {
public int countPrimes(int n) {
if (n <= 1) {
return 0;
}
// 默认所有的元素值都会设置为false
boolean[] notPrime = new boolean[n];
notPrime[0] = true;
notPrime[1] = true;
for (int i = 2; i * i < n; i++) {
// 如果i是一个质数,i将i的倍数设置为非质数
// 如是i是一个合数,则它必定已经设置为true了,因为是从2开始处理的
if (!notPrime[i]) {
for (int j = 2 * i; j < n; j += i) {
notPrime[j] = true;
}
}
}
// 统计质数的个数
int result = 0;
for (boolean b : notPrime) {
if (!b) {
result++;
}
}
return result;
}
}
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。
版权声明:本文为博主原创文章,未经博主允许不得转载。
【LeetCode-面试算法经典-Java实现】【204-Count Primes(统计质数)】
原文地址:http://blog.csdn.net/derrantcm/article/details/48021413