這個計算機的功能
這個工具能找出一個整數的每一個因數(除數),並列出它所有的因數對——也就是兩兩相乘會等於原數的數字組合。所謂整數的因數,是指能整除該整數、且沒有餘數的整數。而因數對就是兩個相乘後得到原數的因數,例如 \(6 \times 8 = 48\)。
使用方法
在輸入框中填入任一非零整數(正數或負數皆可)並送出。計算機會回傳三項結果:這個數共有多少個因數、由小到大排列的完整因數清單,以及每一組以 \(a \times b = n\) 形式呈現的因數對。若輸入負數,計算機會顯示帶正負號的因數對,因為負數乘積必須由一正一負兩個因數相乘而得。
公式原理說明
計算機採用「試除法」。設 \(n\) 為你輸入的數,\(m = |n|\) 為其絕對值。它只需測試從 1 到 \(m\) 平方根(向下取整)的候選除數 \(i\)。$$i = 1, 2, \dots, \left\lfloor \sqrt{m} \right\rfloor$$每當 \(m\) 除以 \(i\) 的餘數為 0 時,\(i\) 與 \(\tfrac{m}{i}\) 都是因數,兩者構成一組 \(i \times \tfrac{m}{i} = m\)。$$m \bmod i = 0 \;\Rightarrow\; i \text{ and } \tfrac{m}{i} \text{ are factors}$$只測試到 \(\sqrt{m}\) 之所以能加快運算,是因為每個大於平方根的因數,都必定與一個小於平方根的因數成對。至於完全平方數,其平方根只列出一次,並顯示為與自身相乘的因數對。
實例演算
以 \(n = 48\) 為例,其平方根約為 6.93,因此我們測試 \(i = 1\) 到 6。可找到 \(1 \times 48\)、\(2 \times 24\)、\(3 \times 16\)、\(4 \times 12\) 與 \(6 \times 8\)(5 無法整除 48)。因數清單為 1、2、3、4、6、8、12、16、24、48——總共十個因數。
常見問題
為什麼不能輸入 0?因為任何整數都能整除 0,所以 0 會有無限多個因數。請改輸入非零整數。
負數是怎麼運算的?以 -6 為例,乘積必須為負,因此每一組正數因數對都會變成兩組帶正負號的因數對:\(-1 \times 6\)、\(1 \times -6\)、\(-2 \times 3\)、\(2 \times -3\)。
這裡所說的質數是什麼?質數恰好只有兩個因數:1 與它本身,例如 7 的因數就是 1 和 7。