如何在 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]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP