Count Primes (E)
Count the number of prime numbers less than a non-negative number, n.
Example:
Input: 10
Output: 4
Explanation: There are 4 prime numbers less than 10, they are 2, 3, 5, 7.
题意
计算小于指定整数n 的素数的个数。
思路
代码实现 - 埃氏筛
class Solution {
public int countPrimes(int n) {
boolean[] p = new boolean[n];
int count = 0;
for (int i = 2; i < n; i++) {
if (p[i] == false) {
count++;
for (int j = 2 * i; j < n; j += i) {
p[j] = true;
}
}
}
return count;
}
}
代码实现 - 欧拉筛
class Solution {
public int countPrimes(int n) {
boolean[] p = new boolean[n];
int[] primes = new int[n];
int count = 0;
for (int i = 2; i < n; i++) {
if (p[i] == false) {
primes[count++] = i;
}
for (int j = 0; j < count; j++) {
if (i * primes[j] >= n) {
break;
}
p[i * primes[j]] = true;
if (i % primes[j] == 0) {
break;
}
}
}
return count;
}
}
本文介绍了两种有效的素数筛算法——埃氏筛和欧拉筛,用于计算小于指定整数n的素数个数。通过具体实例展示了算法的实现过程,并对比了两种算法的优劣。
234

被折叠的 条评论
为什么被折叠?



