我已经寻找这个答案一段时间了,但找不到任何东西。
我正在尝试创建一个 IntStream ,它可以非常快速地找到素数(很多很多素数,非常快——几秒钟内数百万个)。
我目前正在使用这个并行流:
import java.util.stream.*;
import java.math.BigInteger;
public class Primes {
public static IntStream stream() {
return IntStream.iterate( 3, i -> i + 2 ).parallel()
.filter( i -> i % 3 != 0 ).mapToObj( BigInteger::valueOf )
.filter( i -> i.isProbablePrime( 1 ) == true )
.flatMapToInt( i -> IntStream.of( i.intValue() ) );
}
}
Run Code Online (Sandbox Code Playgroud)
但生成数字需要很长时间。(生成 1,000,000 个素数需要 7546 毫秒)。
有没有任何明显的方法可以使其更高效/更快?