到目前为止,如果数字是质数,我就能打印它,否则就打印“”:
=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),A2,""))
如果数字是复合数,是否可以改变公式来打印其最小除数?
答案1
您的测试AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0)
将返回任何不能整除另一个数字的数字。所以我们想要相反的结果:
MOD(A3,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A3),0))))=0
但我们想要的是满足以下条件的最小数字:
MIN(IF(MOD(A3,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A3),0))))=0,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A3),0)))))
将其放在内部 IF 的 false 位置。
它将从 2 迭代到数字的平方并返回可以整除该数字的最小值。
所以:
=IF(A2=2,"Prime",IF(AND(MOD(A2,ROW(INDIRECT("2:"&ROUNDUP(SQRT(A2),0))))<>0),A2,MIN(IF(MOD(A2,ROW(INDIRECT("2:" & A2)))=0,ROW(INDIRECT("2:" & A2))))))
这是一个数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。