java8中使用流区分质数与非质数
public class PrimeTest {
public static void main(String[] args) {
Map<Boolean, List<Integer>> collect = IntStream.rangeClosed(2, 100).boxed().collect(partitioningBy(PrimeTest::isPrime));
System.out.println(collect.get(true));
System.out.println(collect.get(false));
}
private static boolean isPrime(int endNum) {
// 一个优化就是仅测试小于等于待测数平方根的因子
int sqrt = (int)Math.sqrt(endNum);
// 如果待测数字不能被流中任何数字整除则返回true
return IntStream.rangeClosed(2, sqrt).noneMatch(e -> endNum % e == 0);
}
}