在 Excel 中输入一个数值,如何直接判断是否为质数?如下图,产生一堆的随机数,立即判断该数是否为一个质数。
【公式设计与解析】
单元格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。
,