lambda,java8,stream,質數,100以內

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

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章