Java简单方法.编写一个函数接口,其中有一个找出所有素数的抽象方法。再编写一个类,类中只有一个方法,找出给定范围内所有的素数。请使用Lambda表达式函数引用的方法,完成找出10000内所有的素数并每行输出10个素数。
时间: 2024-03-16 21:44:35 浏览: 56
用java求素数
好的,我来为您解答。
首先,我们需要定义一个函数式接口,用于找出所有素数:
```java
@FunctionalInterface
public interface PrimeFinder {
boolean isPrime(int n);
}
```
然后,我们可以编写一个类,实现这个接口,用于找出给定范围内的所有素数:
```java
public class PrimeFinderImpl {
public static List<Integer> findPrimes(int start, int end, PrimeFinder primeFinder) {
List<Integer> primes = new ArrayList<>();
for (int i = start; i <= end; i++) {
if (primeFinder.isPrime(i)) {
primes.add(i);
}
}
return primes;
}
}
```
接下来,我们可以使用Lambda表达式和方法引用,来实现找出10000内所有的素数并每行输出10个素数的功能:
```java
public class Main {
public static void main(String[] args) {
List<Integer> primes = PrimeFinderImpl.findPrimes(2, 10000, Main::isPrime);
for (int i = 0; i < primes.size(); i++) {
System.out.print(primes.get(i) + " ");
if ((i + 1) % 10 == 0) {
System.out.println();
}
}
}
private static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
```
在上面的代码中,我们使用了方法引用 `Main::isPrime`,来将 `isPrime` 方法作为参数传递给了 `PrimeFinderImpl.findPrimes` 方法。这样,我们就可以使用Lambda表达式和方法引用,来实现简单的函数式编程。
最后,我们可以运行程序,查看输出结果。程序会找出10000内的所有素数,并每行输出10个素数。
阅读全文