1.求出1000以内所有的素数。要用埃拉托色尼算法。具体算法是,- 构建一个从2~1000的数组- 令N=2 ,删掉N整数倍的数字;- N增加,等于3,删掉N的整数倍数字;- N再增加,等于5(因为4Java
时间: 2024-09-11 12:09:13 浏览: 49
在Java中,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来找出1000以内的所有素数。这里是一个简单的步骤描述:
1. 初始化一个布尔类型的数组isPrime[1001],并将所有元素初始化为true,表示默认所有数字都是素数。
2. 从第一个质数2开始,遍历到sqrt(1000),这是因为在1000以内最大的因数不会超过其平方根。
- 对于每个当前的质数N,将isPrime[N*]设置为false,因为N的所有倍数都不是素数。
- 遍历的步长应该是N(跳过已标记为非素数的数字),例如:`for (int i = N*N; i <= 1000; i += N)`。
3. 在遍历结束后,isPrime[]数组中值为true的索引就是对应的素数。因为数组下标从0开始,所以我们需要加1来获取实际的素数。
以下是部分代码实现示例:
```java
public static void printPrimes(int limit) {
boolean[] isPrime = new boolean[limit + 1];
Arrays.fill(isPrime, true); // 全部设为true
isPrime[0] = false;
isPrime[1] = false;
for (int p = 2; p * p <= limit; p++) {
if (isPrime[p]) { // 如果p是质数
for (int i = p * p; i <= limit; i += p) { // 将p的倍数标记为非素数
isPrime[i] = false;
}
}
}
for (int i = 2; i < limit; i++) {
if (isPrime[i]) {
System.out.print(i + " "); // 输出素数
}
}
}
// 调用函数
printPrimes(1000);
```
阅读全文