在 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。

arrow
arrow
    全站熱搜

    vincent 發表在 痞客邦 留言(0) 人氣()