簡體   English   中英

使用java流來查找一個數字是否是素數

[英]Using java streams to find if a number is prime or not

我正在閱讀Cracking the Coding Interview ,它有一個找到我在JShell上運行的素數的例子

boolean isPrime(int n) {
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      return false;
    }
  }
  return true;
}

然后我正在嘗試將其轉換為java中的流,但如前所述發現這很困難

boolean isPrimeStream(int n) {
  return IntStream.range(0, n) // how to do similar to for loop above
    .anyMatch(i -> n % i == 0);  // i think this is the reason for failure
}

我正在閱讀《破解編碼面試》 ,其中有一個示例,它找到了我在JShell上運行的素數

boolean isPrime(int n) {
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      return false;
    }
  }
  return true;
}

然后我試圖將其轉換為java中的流,但是發現這很難提到

boolean isPrimeStream(int n) {
  return IntStream.range(0, n) // how to do similar to for loop above
    .anyMatch(i -> n % i == 0);  // i think this is the reason for failure
}

我正在閱讀《破解編碼面試》 ,其中有一個示例,它找到了我在JShell上運行的素數

boolean isPrime(int n) {
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      return false;
    }
  }
  return true;
}

然后我試圖將其轉換為java中的流,但是發現這很難提到

boolean isPrimeStream(int n) {
  return IntStream.range(0, n) // how to do similar to for loop above
    .anyMatch(i -> n % i == 0);  // i think this is the reason for failure
}

我正在閱讀《破解編碼面試》 ,其中有一個示例,它找到了我在JShell上運行的素數

boolean isPrime(int n) {
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      return false;
    }
  }
  return true;
}

然后我試圖將其轉換為java中的流,但是發現這很難提到

boolean isPrimeStream(int n) {
  return IntStream.range(0, n) // how to do similar to for loop above
    .anyMatch(i -> n % i == 0);  // i think this is the reason for failure
}
package Java8Practice;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class PrintPrimeNumbers {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    List<Integer> primes = list.stream().filter(n -> isPrime(n)).collect(Collectors.toList());
    System.out.println(primes);
}

static boolean isPrime(int n) {
    return IntStream.range(2, n).noneMatch(i -> n % i == 0);
 }
}

/*Output 
[1, 2, 3, 5, 7]
*/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM