用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+" ");
}
}