本文介紹了Java 8中的素數的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我試圖用Java 8編寫一個簡單的素數程序。以下是程序。我也想減少isPrime()
中的代碼。是否有什么方法可以篩選2
到n/2
中的元素,然后對n%i == 0
應用篩選,從而使isPrime
變得無關緊要?
import static java.util.stream.Collectors.toList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
public class Stream1 {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 20);
// Prime number
System.out.println(numbers.stream()
.filter(Stream1::isPrime)
.collect(toList()));
}
public static boolean isPrime(int number) {
for (int i = 2; i <= number / 2; i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
}
推薦答案
IntStream可以生成整數流
public static boolean isPrime(int number) {
return !IntStream.rangeClosed(2, number/2).anyMatch(i -> number%i == 0);
}
或
public static boolean isPrime(int number) {
return IntStream.rangeClosed(2, number/2).noneMatch(i -> number%i == 0);
}
這篇關于Java 8中的素數的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,