Java求1728-2523间素数个数
时间: 2024-10-12 17:03:36 浏览: 42
在Java中计算1728到2523之间的素数个数,可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)。这是一种用于查找一定范围内所有质数的有效算法。以下是简单的步骤:
1. 初始化一个布尔数组`isPrime[]`,大小等于给定范围的最大值+1,并将所有元素初始化为`true`,表示它们都是潜在的质数。
2. 遍历数组,从第一个数字(2开始,因为0和1不是质数)开始,对于每个素数i,标记它的倍数为非素数。例如,如果i是素数,就将`isPrime[i*j] = false`,其中j从2遍历到`int sqrt(i)`,这是因为大于i的因子必定有一个小于等于i。
3. 统计并记录`isPrime`数组中初始为`true`的元素个数,这些就是区间内的素数。
下面是相应的Java代码示例:
```java
public static int countPrimes(int start, int end) {
boolean[] isPrime = new boolean[end + 1];
for (int i = 2; i * i <= end; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= end; j += i) {
isPrime[j] = false;
}
}
}
int primeCount = 0;
for (int i = start; i <= end; i++) {
if (isPrime[i]) {
primeCount++;
}
}
return primeCount;
}
// 使用上述函数
int countInRange = countPrimes(1728, 2523);
System.out.println("Number of primes between 1728 and 2523: " + countInRange);
阅读全文