如何在 Java 中利用 lambda 表达式来生成质数?


质数是一个大于1并且只能被1本身整除的数。换句话说,除了它本身或 1 之外,它不能被其他数字整除。质数的生成序列为2、3、5、7、11、13、17,依次类推。

在下面的示例中,我们可以借助Stream APIlambda 表达式生成质数

示例

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]

更新时间:2020 年 7 月 13 日

2K+ 浏览次数

启动你的职业之路 职业

通过完成课程获得认证

开始
广告
© . All rights reserved.