首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

素數高效算法:List 集合初始化與賦值解析

     編輯:程式設計綜合問答

問題背景

用戶貼出一張代碼截圖,詢問 List 是如何被賦值的。截圖僅展示了集合聲明與初始化部分。

常見 List 初始化與賦值方式

1. 聲明並初始化(Java 9+)

List<Integer> primes = List.of(2, 3, 5, 7, 11); // 不可變列表

2. 可變列表初始化(ArrayList)

List<Integer> primes = new ArrayList<>(Arrays.asList(2, 3, 5, 7, 11));

3. 雙括號初始化(匿名內部類,不推薦生產環境)

List<Integer> primes = new ArrayList<Integer>() {{
  add(2); add(3); add(5); add(7); add(11);
}};

4. Stream API 生成(範圍/條件)

List<Integer> primes = IntStream.rangeClosed(2, 100)
  .filter(n -> isPrime(n))
  .boxed()
  .collect(Collectors.toList());

高效素數篩選算法:埃拉托斯特尼篩法

public static List<Integer> sieveOfEratosthenes(int n) {
  boolean[] isPrime = new boolean[n + 1];
  Arrays.fill(isPrime, true);
  isPrime[0] = isPrime[1] = false;
  for (int i = 2; i * i <= n; i++) {
    if (isPrime[i]) {
      for (int j = i * i; j <= n; j += i) {
        isPrime[j] = false;
      }
    }
  }
  List<Integer> primes = new ArrayList<>();
  for (int i = 2; i <= n; i++) {
    if (isPrime[i]) primes.add(i);
  }
  return primes;
}

時間複雜度 O(n log log n),空間 O(n),適合 n < 10^7 量級。

總結

截圖中僅見集合初始化,實際賦值邏輯可能在後續循環或流式操作中。掌握上述初始化方式與篩法算法,可高效解決素數相關問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved