如何在Excel中用函數判斷質數或合數??

Tags: 函數, 合數, 質數,

有時候我們會遇到需要判斷或者統計質數或合數的個數的情況,本文介紹用函數的方法來判斷或者統計質數或者合數的個數。

工具/原料

Excel

方法/步驟

根據百度百科的解釋,如下圖所示

質數(prime number)又稱素數,有無限個。一個大於1的自然數,除了1和它本身外,不能被其他自然數(質數)整除,換句話說就是該數除了1和它本身以外不再有其他的因數;否則稱為合數。

根據算術基本定理,每一個比1大的整數,要麼本身是一個質數,要麼可以寫成一系列質數的乘積;而且如果不考慮這些質數在乘積中的順序,那麼寫出來的形式是唯一的。最小的質數是2。

如何在Excel中用函數判斷質數或合數?

如下圖所示,假如A1單元格是任意一個自然數,根據定義可以通過以下數組公式來判斷它是否是質數。

=IF(A1>1,IF(SUM(1*(MOD(A1,ROW(INDIRECT("1:"&A1)))=0))=2,"質數","合數"),"既不是質數也不是合數")

如何在Excel中用函數判斷質數或合數?

公式解釋,首先根據定義質數必須是大於1,所以先判斷A1>1,然後根據定義

一個大於1的自然數,除了1和它本身外,不能被其他自然數(質數)整除,也就是一個數除以介於1和本身之間的數都不能整除,所以用公式

SUM(1*(MOD(A1,ROW(INDIRECT("1:"&A1)))=0))=2 進行判斷是否可以整除的就只有1和本身。其中

ROW(INDIRECT("1:"&A1))是指1和本身之間的所有的自然數。如下圖所示

如何在Excel中用函數判斷質數或合數?

以上的方法是用1和數字本身之間的所有的自然數去相除來判斷是否是質數的方法,這個方法對於小數字是沒有問題的,如果是一個比較大的數字則公式會出問題。比如在2003版本中最大的行數是65536,假如要判斷大於65536的個數是否為質數,用以上的方法就會出錯了。

如下圖所示

如何在Excel中用函數判斷質數或合數?

如果要判斷一個較大的數是否是質數,還可以利用質數的一個定理

在一般領域,對正整數n,如果用2到根號n之間的所有整數去除,均無法整除,則n為質數。

如下圖所示

如何在Excel中用函數判斷質數或合數?

根據以上的定理,可以將公式改為

=IF(A1>1,IF(SUM(1*(MOD(A1,ROW(INDIRECT("1:"&INT(SQRT(A1)))))=0))=2,"質數","合數"),"既不是質數也不是合數")

用INT(SQRT(A1))代替A1減少整除的數目,來將待判斷的數字增大。

如何在Excel中用函數判斷質數或合數?

基於上述的步驟解釋,相信大家一定對如何判斷質數、合數有了一個深入的瞭解。

相關問題答案