🧮 U5 數學規則・知識點 K14

因數、倍數與質數

用餘數判斷因數、倍數,找出質數和最大公因數

B5-01-Factors
練習平台
點標題可以展開或收合

1學習目標

  • 會用「除以…的餘數 = 0」判斷整除、倍數和因數。
  • 會用迴圈找出一個數的所有因數,並數出因數的個數。
  • 會判斷一個數是不是質數。
  • (延伸)認識求最大公因數的輾轉相除法。

2概念說明

數學課學過的因數、倍數,在程式裡都靠同一個工具:餘數。

說法用程式判斷
A 是 B 的倍數A 除以 B 的餘數 = 0
i 是 N 的因數N 除以 i 的餘數 = 0
N 是偶數N 除以 2 的餘數 = 0

要找 N 的所有因數,就讓 i 從 1 數到 N,一個一個試:

i 從 1 數到 N:
    如果 N 除以 i 的餘數 = 0:
        i 是 N 的因數
📌 質數是什麼?

質數是大於 1、而且只有 1 和自己兩個因數的數,例如 2、3、5、7、17。1 只有一個因數,所以 1 不是質數。

3示範題:跟著一步一步做(1 題)

先讀題,再一步一步點開來看。建議每看完一步,就先自己在平台上試著寫寫看。

示範題

因數個數

L2|進階MATH01-002
給定一個正整數 N,請計算 N 有幾個正因數。
輸入
輸入一個正整數 N。
輸出
輸出一個整數,代表 N 的正因數個數。
範例1
輸入
12
輸出
6
第 1 步:讀題,找出輸入和輸出
  • 輸入:一個正整數 N。
  • 輸出:N 有幾個正因數。
第 2 步:把問題拆成步驟

這是「找所有因數」加上 K08 的「條件計數」:

詢問並等待 → N
次數 設為 0
i 從 1 數到 N:
    如果 N 除以 i 的餘數 = 0:
        次數 設為 次數 + 1
說出 次數
第 3 步:用範例走一次

N = 12:

i12 除以 i 的餘數是因數?次數
10是1
20是2
30是3
40是4
52否4
60是5
7~11不是 0否5
120是6

輸出 6。

第 4 步:對照範例答案

按「載入範例」,注意餘數積木的順序是「N 除以 i 的餘數」,不是「i 除以 N」。

⚠️ 常見錯誤
  • 餘數的兩邊放反:寫成「i 除以 N 的餘數」,意思完全不同,答案會錯。
  • 迴圈終點寫成 N−1:會漏掉 N 自己這個因數,12 的因數個數會變成 5。

4練習題(3 題)

照順序完成這些題目。寫完之後,可以在平台上按「載入範例」和自己的寫法比較。

倍數判斷

L1|基礎MATH01-001
這題多了什麼:不需要迴圈:A 除以 B 的餘數是 0,就輸出 YES,否則輸出 NO。
看題目內容
給定兩個正整數 A 與 B,請判斷 A 是否為 B 的倍數。
輸入
輸入兩個正整數 A 與 B。
輸出
若 A 是 B 的倍數,輸出 YES;否則輸出 NO。
範例1
輸入
24 6
輸出
YES
💡 需要提示嗎?
A 除以 B 的餘數是 0,A 就是 B 的倍數。

找所有因數

L2|進階A-09-1
這題多了什麼:和示範用同一個迴圈,只是找到因數時不是計數,而是說出 i。每一輪找到就說出,平台比對時空白和換行視為一樣,所以不用自己處理空白。
看題目內容
因數是指一個整數能被另一整數「整除」時,這個「除數」就是「被除數」的因數。 0不是任何整數的因數。1是所有整數的因數。 請寫一個程式,輸入一個整數 N,請找出N所有的因數。 所有因數以空白符號間格 這題訓練你使用條件與迴圈判斷。
範例1
輸入
12
輸出
1 2 3 4 6 12
範例2
輸入
39
輸出
1 3 13 39
💡 需要提示嗎?
讓 i 從 1 跑到 N,N 除以 i 的餘數是 0,i 就是 N 的因數。

質數判斷

L2|進階MATH01-003
這題多了什麼:有兩種想法都可以:

  • 數因數個數:用示範的方法數出因數個數,剛好 2 個就是質數(PRIME)。記得 N = 1 時只有 1 個因數,不是質數。
  • 找其他因數(範例答案的做法):讓 i 從 2 數到 N−1,只要有一個 i 能整除 N,就用旗標記下「找到了」,那 N 就不是質數。
看題目內容
給定一個正整數 N,請判斷 N 是否為質數。質數是大於 1,且只有 1 和自己兩個正因數的數。
輸入
輸入一個正整數 N。
輸出
若 N 是質數,輸出 PRIME;否則輸出 NOT。
範例1
輸入
17
輸出
PRIME
💡 需要提示嗎?
先算出因數個數;質數的因數剛好只有 2 個。注意 1 不是質數。

5延伸挑戰(2 題)

核心題都會了嗎?這些題目需要把好幾個技巧組合起來,想挑戰的話可以試試看。

🚀 最大公因數 L3|挑戰
挑戰重點:輾轉相除法:把 B 設為「A 除以 B 的餘數」,原本的 B 變成新的 A,一直重複到 B 變成 0,這時的 A 就是最大公因數。例如 12 和 18:(12, 18)→(18, 12)→(12, 6)→(6, 0),答案是 6。這題會用到「重複直到」迴圈,因為事先不知道要重複幾次。
給定兩個正整數 A 與 B,請找出它們的最大公因數。
輸入
輸入兩個正整數 A 與 B。
輸出
輸出一個整數,代表 A 與 B 的最大公因數。
範例1
輸入
12 18
輸出
6
💡 需要提示嗎?
可以用輾轉相除法:把大數除以小數的餘數當成新的除數,重複到餘數是 0 為止。
🚀 最小公倍數 L3|挑戰
挑戰重點:利用一個關係:兩數的乘積 = 最大公因數 × 最小公倍數。所以先用上一題的方法算出最大公因數,最小公倍數就是 A × B ÷ 最大公因數。例如 12 × 18 ÷ 6 = 36。
給定兩個正整數 A 與 B,請找出它們的最小公倍數。
輸入
輸入兩個正整數 A 與 B。
輸出
輸出一個整數,代表 A 與 B 的最小公倍數。
範例1
輸入
12 18
輸出
36
💡 需要提示嗎?
想一想:兩數的乘積、最大公因數、最小公倍數之間有什麼關係?

6自我檢核

學完之後,檢查看看你能不能做到這些事。有做不到的,就回到上面對應的地方再看一次。

  • 我會用餘數判斷整除、倍數和因數,也知道餘數積木兩邊的順序很重要。
  • 我會用迴圈找出所有因數,並數出因數的個數。
  • 我能說出質數的定義,並知道 1 不是質數。
  • 我能用兩種不同的想法判斷質數。