如何过滤以从列表中获取素数?
我想知道是否可以仅使用一个长返回和流进行检查。
public static List<Integer> primeNumbers(List <Integer> list) {
return Optional.ofNullable(list)
.orElse(Collections.emptyList())
.stream()
.filter(Objects::nonNull)
.filter(i -> i %2 ==0)
.toList();
}
您可以使用(或误用)
BigInteger.isProbablePrime
:
import java.math.BigInteger;
....
public static List<Integer> primeNumbers(List <Integer> list) {
return list.stream()
.filter(i -> BigInteger.valueOf(i).isProbablePrime(10))
.collect(Collectors.toList());
}
Google 的 Guava 库提供了
IntMath.isPrime
方法,用于快速确定特定 int
是否为素数:
public static List<Integer> primeNumbers(List<Integer> list) {
return Optional.ofNullable(list).orElse(List.of()).stream()
.filter(Objects::nonNull)
.filter(IntMath::isPrime)
.toList();
}