如何在 Java 中利用 lambda 表示式來生成質數?
質數是一個大於1並且只能被1或本身整除的數。換句話說,除了它本身或 1 之外,它不能被其他數字整除。質數的生成序列為2、3、5、7、11、13、17,依次類推。
在下面的示例中,我們可以藉助Stream API 和lambda 表示式生成質數。
示例
import java.util.*; import java.util.stream.*; public class PrimeNumberLambdaTest { public static void main(String[] args) { List<Integer> generate = PrimeNumberLambdaTest.generate(10); System.out.println(generate); } public static List<Integer> generate(int series) { Set<Integer> set = new TreeSet<>(); return Stream.iterate(1, i -> ++i) .filter(i -> i %2 != 0) // lambda expression .filter(i -> { set.add(i); return 0 == set.stream() .filter(p -> p != 1) .filter(p -> !Objects.equals(p, i)) .filter(p -> i % p == 0) .count(); }) .limit(series) .collect(Collectors.toList()); } }
輸出
[1, 3, 5, 7, 11, 13, 17, 19, 23, 29]
廣告