用lambda表达式,求出100以内的质数
引入的包是java.util.stream.IntStream
IntStream.range(2,100)
.filter(x->IntStream.range(2,(int)Math.sqrt(x)+1)
.filter(t->x%t==0).count()==0)
.forEach(x->System.out.print(x+" "));
解释:
IntStream.range(int start,int end)值的是从start开始到end-1的数
内部的filter(t->x%t==0)找的是元素可以被整除的数
外部的filter(x->IntStream.range(2,(int)Math.sqrt(x)+1)
.filter(t->x%t==0).count()==0)找的是满足元素被整数的数的数量为0,那么就是可以被整除的数就被过滤掉了
经过测算,与传统的两层for循环,在数量小的时候用时差不多,当超过10万级别,java8的性能优势就展现出来,有兴趣的同学可以测试一下
传统求质数的写法
for(int i = 2;i<=100;i++){
boolean flag = false;
for(int j=2;j<Math.sqrt(i);i++){
if(i%j==0){
flag = true;
}
break;
}
if(flag){
System.out.print(i+" ");
}
}