用Java编写一个函数接口,其中有一个找出所有素数的抽象方法。再编写一个类,类中只有一个方法,找出给定范围内所有的素数。请使用Lambda表达式函数引用的方法,完成找出10000内所有的素数并每行输出10个素数。用两种办法
时间: 2024-02-29 21:52:08 浏览: 68
利用JAVA,求素数和。
第一种办法:使用 `java.util.function.Predicate` 接口作为函数接口。
```java
import java.util.function.Predicate;
import java.util.stream.IntStream;
public class PrimeNumberFinder1 {
public static void findPrimes(int start, int end) {
Predicate<Integer> isPrime = n -> IntStream.rangeClosed(2, (int) Math.sqrt(n)).noneMatch(i -> n % i == 0);
IntStream.rangeClosed(start, end)
.filter(isPrime)
.forEach(n -> {
System.out.print(n + " ");
if (n % 10 == 9) {
System.out.println();
}
});
}
}
```
然后在主函数中调用 `PrimeNumberFinder1.findPrimes(2, 10000)` 即可输出 2 到 10000 内的所有素数。
第二种办法:使用自定义函数接口。
```java
interface PrimeFinder2 {
boolean isPrime(int n);
}
public class PrimeNumberFinder2 {
public static void findPrimes(int start, int end) {
PrimeFinder2 isPrime = n -> IntStream.rangeClosed(2, (int) Math.sqrt(n)).noneMatch(i -> n % i == 0);
IntStream.rangeClosed(start, end)
.filter(isPrime::isPrime)
.forEach(n -> {
System.out.print(n + " ");
if (n % 10 == 9) {
System.out.println();
}
});
}
}
```
然后在主函数中调用 `PrimeNumberFinder2.findPrimes(2, 10000)` 即可输出 2 到 10000 内的所有素数。
阅读全文