阿摩線上測驗 登入

申論題資訊

試卷:102年 - 102年高等三級暨普通考普通_資訊處理#29218
科目:程式設計
年份:102年
排序:0

題組內容

一、

申論題內容

⑵撰寫一函數 BuildPrime(m),使用 IsPrime 函數建立陣列 PrimeAry,使其擁有小於 或等於 m 的所有質數。譬如:BuildPrime(5)將使 PrimeAry 陣列依序儲存 2, 3, 5, 而 BuildPrime(10)將使 PrimeAry 陣列依序儲存 2, 3, 5, 7。(15 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
為了構建一個包含所有小於或等於 m 的質數的 PrimeAry 陣列,我們需要結合前述的 IsPrime 函數。以下是一個簡單的實作方法,這裡將會使用 Java 語言,並假設 IsPrime 函數已經被定義且可用。
java

import java.util.ArrayList;
import java.util.List;
public class PrimeArrayBuilder {
    // 假設 IsPrime 函數已被定義
    // 因為 IsPrime 函數的具體實現不在此處,以下將提供一個簡單的實現用於示範
    public static boolean IsPrime(int n) {
        if (n <= 1) return false;
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0) return false;
        }
        return true;
    }
    // BuildPrime 函數用於建立包含所有小於或等於 m 的質數的 PrimeAry 陣列
    public static int[] BuildPrime(int m) {
        // 使用 List 來動態添加質數,因為我們事先不知道有多少質數
        List<Integer> primes = new ArrayList<>();
        for (int i = 2; i <= m; i++) {
            if (IsPrime(i)) {
                primes.add(i);
            }
        }
        // 將 List 轉換為陣列
        int[] PrimeAry = primes.stream().mapToInt(i -> i).toArray();
        return PrimeAry;
    }
    public static void main(String[] args) {
        // 測試 BuildPrime 函數
        int m = 10;
        int[] PrimeAry = BuildPrime(m);
        System.out.print("PrimeAry for m = " + m + ": ");
        for (int prime : PrimeAry) {
            System.out.print(prime + " ");
        }
    }
}
在這段程式碼中,BuildPrime 函數首先創建一個空的 ArrayList,用於存儲找到的質數。然後,它透過從 2 到 m 的迴圈,使用 IsPrime 函數檢查每個數字是否為質數。如果是,則將其添加到列表中。迴圈結束後,使用 Java 8 的流(Stream)API 將 ArrayList 轉換成陣列。
最後,在 main 函數中測試 BuildPrime 函數,並列印出結果來驗證其正確性。這樣就可以建立一個包含所有小於或等於 m 的質數的陣列了。