用“埃氏筛法”求2~100以内的素数。2~100以内的数,先去掉2的倍数,再去掉3的倍数,再去掉5的倍数,……依此类推,最后剩下的就是素数。 要求使用数组和循环,最好使用一下增强的for语句。 提示:可以使用一个boolean类型的数组,所以“将某个数i去掉”,可以表示成a[i]=false。当然也可以使用其他方法。 请注意代码风格:类名、变量名的命名,以及必要注释等等; 请上传压缩后的源代码文件(为防上传失败,请同时把代码贴到文本框中)
时间: 2024-03-09 10:46:07 浏览: 66
以下是使用埃氏筛法求2~100以内的素数的Java代码:
```java
import java.util.Arrays;
public class PrimeNumber {
public static void main(String[] args) {
boolean[] isPrime = new boolean[101]; // 用于标记是否为素数
Arrays.fill(isPrime, true); // 先全部标记为素数
isPrime[0] = false; // 0和1不是素数
isPrime[1] = false;
for (int i = 2; i <= 100; i++) {
if (isPrime[i]) { // 如果i是素数,则将i的倍数标记为非素数
for (int j = i * 2; j <= 100; j += i) {
isPrime[j] = false;
}
}
}
for (int i = 2; i <= 100; i++) {
if (isPrime[i]) {
System.out.print(i + " ");
}
}
}
}
```
代码说明:
1. 使用布尔数组isPrime来标记每个数是否为素数,初始时全部标记为素数。
2. 0和1不是素数,将其标记为非素数。
3. 从2开始遍历到100,如果当前数是素数,则将其倍数标记为非素数。
4. 最后再遍历一遍数组,输出所有标记为素数的数。
使用增强的for语句可以简化数组遍历的代码,例如:
```java
for (int i = 2; i <= 100; i++) {
if (isPrime[i]) {
System.out.print(i + " ");
}
}
```
可以改写为:
```java
for (boolean prime : isPrime) {
if (prime) {
System.out.print(i + " ");
}
}
```
注释和命名规范请参考代码中的实现。
阅读全文