面试:请使用代码实现,在1~1000之间的质数<大于1的自然数中,只能被1和自身整除的数是质数>
实现方式一:基本版<效率低,实现简单>
下面通过质数的概念来做简要的实现,思路如下:
- 创建 NumberManager 类,负责 1~1000 之间的质数查找。
- 在 NumberManager 类中定义 getPrimeNumbersBetween1And1000 来做1000以内的质数查找。
- 创建 Demo 类,运行 NumberManager 的 getPrimeNumbersBetween1And1000 函数。
public class NumberManager {
public static List<int> getPrimeNumbersBetween1And1000() {
// 因为1不是质数,质数是从2开始的;
List<Integer> primes = new ArrayList<>();
primes.add(2);
for(int i = 3; i <= 1000; i++) {
boolean isDivided = false;
for (int j = 2; j <= i; j++) {
if (j < i && i % j == 0) {
isDivided = true;
break;
}
}
if (isDivided) {
primes.add(i);
}
}
return primes;
}
public static void printNumberList(List<Integer> numbers) {
if (numbers == null || numbers.isEmpty()) {
System.out.println("Param numbers is null or empty, exit process");
return;
}
int size = numbers.size();
System.out.println("Beginning to print numbers, numbersSize = " + size);
for(int i = 0; i < size; i++) {
Integer numberI = numbers.get(i);
System.out.println("index = " + i + ", numberI ===> " + numberI);
}
System.out.println("Ending to print numbers, exit process");
}
}
public class Demo {
public static void main(String[] args) {
NumberManager manager = new NumberManager();
// step 1: get primes between 1~1000;
List<Integer> primes = manager.getPrimeNumbersBetween1And1000();
// step 2: print primes result between 1~1000;
manager.printNumberList(primes);
}
}