用Java语言实现”质数筛“
设计思路:
1. 开辟标记数组 isPrime[] ,初始默认所有数为质数;
2. 建立空集合 primes 存放已发现质数;
3. 从 2 到 n 逐个遍历数字 i:
(1). i 未被标记 → 是质数,存入 primes ;
(2). 遍历质数列表中的每个质数 p:
- 若 i* p > n,超出范围,直接跳出;
- 标记 i* p 为合数;
- 若 i % p == 0,立刻 break 内层循环;
4. 遍历结束, isPrime 为 true 的下标即为质数。
完成代码实现:
package hellojava;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Javaone {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入筛选范围上限:");
int n = sc.nextInt();
List
System.out.println("1~" + n + " 的质数:");
System.out.println(primeList);
sc.close();
}
public static List
List
boolean[] isPrime = new boolean[max + 1];
for (int i = 2; i <= max; i++) {
isPrime[i] = true;
}
for (int i = 2; i <= max; i++) {
if (isPrime[i]) {
primes.add(i);
}
for (int p : primes) {
if (i * p > max) break;
isPrime[i * p] = false;
if (i % p == 0) break;
}
}
return primes;
}
}
运行结果展示:

浙公网安备 33010602011771号