2015年11月5日 星期四

Excel-判斷是否為質數(SUMPRODUCT,MOD,ROW,INDIRECT)

在 Excel 中輸入一個數值,如何直接判斷是否為質數?如下圖,產生一堆的亂數,立即判斷該數是否為一個質數。
Excel-判斷是否為質數(SUMPRODUCT,MOD,ROW,INDIRECT)

【公式設計與解析】
儲存格B2:
=IF(SUMPRODUCT(--(MOD(A2,ROW(INDIRECT("2:"&(A2-1))))=0))=0,"質數","")
ROW(INDIRECT("2:"&(A2-1))):在 SUMPRODUCT 函數中,可以根據儲存格A2,產生去頭尾的數值。例如:儲存格A2=347,則傳回 ROW(2:346),代表 2~346。
MOD(A2,ROW(INDIRECT("2:"&(A2-1)))):將儲存格A2除以該數去頭尾的數值,取得其餘數。此例傳回:347/2、347/3、347/4、...、347/345、347/346 的餘數。(依照數學的定義,其實只要除到該數的平方根即可。)
上式如果整除,會傳回0,若非整除,則會產生非0的餘數。
--(MOD(A2,ROW(INDIRECT("2:"&(A2-1))))=0))=0:判斷上式的結果有幾個0,其中「--」乃將判斷結果的 TRUE/FALSE 轉換為 1/0
SUMPRODUCT(--(MOD(A2,ROW(INDIRECT("2:"&(A2-1))))=0)):如果最後的總和為『0』,代表沒有除盡任何一個數,則該數即為『質數』。
複製儲存格B2,貼至儲存格B2:B18。

沒有留言:

張貼留言

檢視其他文章

好康東東