筛数法面向对象求素数
时间: 2024-09-03 17:00:44 浏览: 66
筛数法是一种用于寻找一定范围内所有素数的经典算法,它通常通过创建一个布尔数组来实现。面向对象的方式可以将这个过程封装成一个类,比如定义一个名为`PrimeFinder`的类:
```java
public class PrimeFinder {
private boolean[] isPrime; // 存储数字是否为素数的状态
public PrimeFinder(int limit) {
this.isPrime = new boolean[limit + 1];
for (int i = 2; i <= limit; i++) {
isPrime[i] = true; // 初始状态下认为所有数字都是素数
}
// 素数筛选
for (int i = 2; i * i <= limit; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= limit; j += i) {
isPrime[j] = false; // 如果i是素数,则它的倍数不是素数
}
}
}
}
public boolean isPrime(int num) {
return num > 1 && isPrime[num]; // 返回指定数字是否为素数
}
// 示例
public static void main(String[] args) {
PrimeFinder finder = new PrimeFinder(30);
System.out.println(finder.isPrime(7)); // 输出:true
System.out.println(finder.isPrime(15)); // 输出:false
}
}
```
在这个类里,我们初始化一个布尔数组表示每个数字是否可能是素数,然后从2开始遍历到根号n,凡遇到素数就将其后续的倍数标记为非素数。`isPrime()`方法则用于查询给定数字是否为素数。
阅读全文