编写一个函数接口,其中有一个找出所有素数的抽象方法。再编写一个类,类中只有一个方法,找出给定范围内所有的素数。请使用Lambda表达式函数引用的方法,完成找出10000内所有的素数并每行输出10个素数。java
时间: 2023-11-28 14:48:01 浏览: 29
函数接口:
```java
@FunctionalInterface
public interface FindPrimes {
List<Integer> find(int n);
}
```
实现类:
```java
public class PrimeFinder {
public static List<Integer> findInRange(int start, int end, FindPrimes findPrimes) {
List<Integer> primes = new ArrayList<>();
for (int i = start; i <= end; i++) {
if (findPrimes.find(i).size() == 1) {
primes.add(i);
}
}
return primes;
}
}
```
Lambda表达式函数引用的方式:
```java
public class Main {
public static void main(String[] args) {
List<Integer> primes = PrimeFinder.findInRange(2, 10000, n -> {
List<Integer> factors = new ArrayList<>();
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
factors.add(i);
}
}
return factors;
});
for (int i = 0; i < primes.size(); i++) {
System.out.print(primes.get(i) + " ");
if ((i + 1) % 10 == 0) {
System.out.println();
}
}
}
}
```