|
本帖最后由 一村之长 于 2015-5-29 07:42 编辑
1、首先我们要理解质数和合数的含义
质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。接下来我们以判断A2单元格属于质数还是合数作为例子;
2、根据质数和合数的含义,我们可以知道当A2小于2或不为整数的时候,则这个数就既不属于质数也不属于合数,也就是非质非合,在函数中怎么表示A2小于2相信大家都懂,A2<2,那么我们怎么判断A2是否整数呢,这个时候我们可以借助INT函数判断(INT函数的功能:将数字向下舍入到最接近的整数。),假如A2不为整数,那么INT(A2)将会将A2向下舍入到最接近的整数,所以这个时候INT(A2)<>A2,反之A2为整数则INT(A2)=A2,我们前面说了当A2小于2或不为整数的时候,则这个数就既不属于质数也不属于合数,用公式可以表示为IF(OR(A2<2,INT(A2)<>A2),"非质非合",)
3、根据质数与合数的含义,我们如果需要判断A2单元格的数字属于质数还是属于合数,那么就需要判断A2能被多少个数整除,如果只能被两个数整除(1和A2本身),则A2为质数,否则为合数,既然是涉及到整除的问题,这时候我们就需要用到MOD函数(MOD函数功能:返回两数相除的余数。结果的正负号与除数相同。),如果MOD函数的结果等于0,则表示整除,否则为不整除,
接下来我们来判断一下
MOD(A2,1)=0
MOD(A2,2)=0
MOD(A2,3)=0
...
MOD(A2,A2)=0
以上公式MOD的第一参数不变,第二参数逐次递增1直至等于A2,所以MOD的第二参数可以写成ROW(INDIRECT(1&":"&A2)),然后MOD(A2,ROW(INDIRECT(1&":"&A2)))会逐个判断1-A2这些数字中被A2相除之后的余数,如果整除,则余数为0,所以MOD(A2,ROW(INDIRECT(1&":"&A2)))=0,能判断出哪些数能被A2整除,能整除的返回TRUE,不能整除的则返回FALSE,接下来我们需要判断,如果TRUE的出现次数是多少次,我们都知道N(TRUE)=1,N(FALSE)=0,(不知道的可以记一下哦,别问为什么,我也不知道微软为什么这么设定),所以N(MOD(A2,ROW(INDIRECT(1&":"&A2)))=0),可以将判断的结果转换成1或0,我们只要计算出总和是多少就表示有多少个1,所以用公式SUMPRODUCT(N(MOD(A2,ROW(INDIRECT(1&":"&A2)))=0)),根据质数与合数的含义我们可以判断当SUMPRODUCT(N(MOD(A2,ROW(INDIRECT(1&":"&A2)))=0))>2时表示A2可以被超过2个数整除,所以属于合数;
3、根据前面第1点和第2点的分析,我们可以得出最终公式
=IF(OR(A2<2,INT(A2)<>A2),"非质非合",if(SUMPRODUCT(N(MOD(A2,ROW(INDIRECT(1&":"&A2)))=0))>2,"合数","质数"))
|
评分
-
查看全部评分
|