如何在不使用isProbablePrime()函數的情況下從java中的BigInteger流過濾素數?過濾來自BigIntegers流的素數
我想這個代碼,但解決不了的錯誤:
List<BigInteger> x =bigIntList.stream().filter(n->n >1 && IntStream.range(2,n).noneMatch(index->n%index==0)).collect(Collectors.toList());
如何在不使用isProbablePrime()函數的情況下從java中的BigInteger流過濾素數?過濾來自BigIntegers流的素數
我想這個代碼,但解決不了的錯誤:
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());
這很有用,但我要求代碼從BigIntegers流中獲取素數列表。 –
@asteriskbimal我改變了代碼從stream()中查找素數。希望有所幫助。 –
蠻力,從2迴路的sqrt(NUM)除以沿途.. – nicomp
@Pritam我嘗試使用isProbablePrime(),但沒有使用它想不通的想法。 –