Java面向对象思想实现,素数的定义: 除了1与本身之外,不能被其他正整数整除的数,叫作素数,也叫质数。 要求:给出一个数N,输出N的的素数系列。 用Java以“面向对象”思想设计并实现。
时间: 2024-09-29 13:04:22 浏览: 34
判断素数,只能被1或本身整除的数称为素数 基本思想
在Java中,我们可以运用面向对象的设计原则,比如封装和多态,来创建一个`PrimeNumberGenerator`类,专门负责生成指定范围内的素数序列。首先,我们需要定义一个`Prime`接口或者抽象类,包含`isPrime`方法用于判断一个数是否为素数:
```java
// Prime interface or abstract class
public interface Prime {
boolean isPrime(int num);
}
```
然后,我们可以创建一个实现了这个接口的具体类`SieveOfEratosthenes`,利用埃拉托斯特尼筛法来找出素数:
```java
public class SieveOfEratosthenes implements Prime {
private int[] primes;
public SieveOfEratosthenes(int n) {
primes = new int[n + 1];
sieve(n);
}
private void sieve(int limit) {
Arrays.fill(primes, true);
primes[0] = primes[1] = false;
for (int i = 2; i * i <= limit; i++) {
if (primes[i]) {
for (int j = i * i; j <= limit; j += i) {
primes[j] = false;
}
}
}
}
@Override
public boolean isPrime(int num) {
return num > 1 && primes[num];
}
}
```
最后,在主程序中,我们通过实例化`SieveOfEratosthenes`,获取指定范围内的素数列表:
```java
public class Main {
public static void main(String[] args) {
int N = 50; // 要生成素数的上限
Prime primeGen = new SieveOfEratosthenes(N);
System.out.println("素数系列:");
for (int i = 2; i <= N; i++) {
if (primeGen.isPrime(i)) {
System.out.print(i + " ");
}
}
}
}
```
在这个例子中,用户输入一个数`N`,`Main`类会调用`SieveOfEratosthenes`类生成并打印出该范围内所有的素数。
阅读全文