从 BigIntegers 流中过滤质数
Filter prime numbers from stream of BigIntegers
如何在不使用 isProbablePrime() 函数的情况下从 java 中的 BigInteger 流中过滤素数?
我试过这段代码但无法解决错误:
List<BigInteger> x =bigIntList.stream().filter(n->n >1 && IntStream.range(2,n).noneMatch(index->n%index==0)).collect(Collectors.toList());
这样的事情应该有所帮助:
public static boolean isBigPrime(BigInteger n) {
if (n.compareTo(new BigInteger("2")) < 0) return false;
else if (n.compareTo(new BigInteger("2")) == 0) return true;
for (BigInteger i = new BigInteger("2"); i.compareTo(n.divide(new BigInteger("2"))) < 0; i = i.add(BigInteger.ONE))
if (n.mod(i).equals(BigInteger.ZERO))
return false;
return true;
}
更多参考here.
这就是您使用 Stream 的方式。
List<BigInteger> prime = l.stream().filter(b -> b.isProbablePrime(1) == true ).collect(Collectors.toList());
如何在不使用 isProbablePrime() 函数的情况下从 java 中的 BigInteger 流中过滤素数?
我试过这段代码但无法解决错误:
List<BigInteger> x =bigIntList.stream().filter(n->n >1 && IntStream.range(2,n).noneMatch(index->n%index==0)).collect(Collectors.toList());
这样的事情应该有所帮助:
public static boolean isBigPrime(BigInteger n) {
if (n.compareTo(new BigInteger("2")) < 0) return false;
else if (n.compareTo(new BigInteger("2")) == 0) return true;
for (BigInteger i = new BigInteger("2"); i.compareTo(n.divide(new BigInteger("2"))) < 0; i = i.add(BigInteger.ONE))
if (n.mod(i).equals(BigInteger.ZERO))
return false;
return true;
}
更多参考here.
这就是您使用 Stream 的方式。
List<BigInteger> prime = l.stream().filter(b -> b.isProbablePrime(1) == true ).collect(Collectors.toList());