使用 Java 流从列表中获取素数

问题描述 投票:0回答:2

如何过滤以从列表中获取素数?

我想知道是否可以仅使用一个长返回和流进行检查。

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();
}
java list java-stream
2个回答
1
投票

您可以使用(或误用)

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());
}

0
投票

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.