编写一个函数接口,其中有一个找出所有素数的抽象方法。再编写一个类,类中只有一个方法,找出给定范围内所有的素数。请使用Lambda表达式函数引用的方法,完成找出10000内所有的素数并每行输出10个素数。
时间: 2024-03-16 19:43:45 浏览: 60
Python实现输出某区间范围内全部素数的方法
好的,这是一个Java的题目,下面是代码实现:
```
interface PrimeFinder {
boolean isPrime(int n);
}
class PrimeNumbers {
public static void find(int n, PrimeFinder finder) {
for (int i = 2; i <= n; i++) {
if (finder.isPrime(i)) {
System.out.print(i + " ");
if (i % 10 == 0) {
System.out.println();
}
}
}
}
}
public class Main {
public static void main(String[] args) {
PrimeFinder finder = (n) -> {
if (n <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
};
PrimeNumbers.find(10000, finder);
}
}
```
在这个代码中,我们首先定义了一个函数接口`PrimeFinder`,其中只有一个抽象方法`isPrime`,用于判断一个数是否为素数。然后我们定义了一个类`PrimeNumbers`,其中只有一个方法`find`,用于找出给定范围内所有的素数。这个方法接受两个参数,一个是范围的上限`n`,另一个是实现了`PrimeFinder`接口的对象。
在`main`函数中,我们使用Lambda表达式实现了`PrimeFinder`接口,并将它作为参数传递给`PrimeNumbers.find`方法,以此找出10000内所有的素数并每行输出10个素数。
需要注意的是,在Lambda表达式中实现的`isPrime`方法,它的实现方式与常规的判断素数的方法相同。
阅读全文