发布网友
共2个回答
热心网友
1质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。最小的质数是2。
2如下图所示,假如A1单元格是任意一个自然数,根据定义可以通过以下数组公式来判断它是否是质数。
=IF(A1>1,IF(SUM(1*(MOD(A1,ROW(INDIRECT("1:"&A1)))=0))=2,"质数","合数"),"既不是质数也不是合数")
3公式解释,首先根据定义质数必须是大于1,所以先判断A1>1,然后根据定义
一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,也就是一个数除以介于1和本身之间的数都不能整除,所以用公式
SUM(1*(MOD(A1,ROW(INDIRECT("1:"&A1)))=0))=2 进行判断是否可以整除的就只有1和本身。其中
ROW(INDIRECT("1:"&A1))是指1和本身之间的所有的自然数。如下图所示
4以上的方法是用1和数字本身之间的所有的自然数去相除来判断是否是质数的方法,这个方法对于小数字是没有问题的,如果是一个比较大的数字则公式会出问题。比如在2003版本中最大的行数是65536,假如要判断大于65536的个数是否为质数,用以上的方法就会出错了。
如下图所示
5如果要判断一个较大的数是否是质数,还可以利用质数的一个定理
在一般领域,对正整数n,如果用2到根号n之间的所有整数去除,均无法整除,则n为质数。
6根据以上的定理,可以将公式改为
=IF(A1>1,IF(SUM(1*(MOD(A1,ROW(INDIRECT("1:"&INT(SQRT(A1)))))=0))=2,"质数","合数"),"既不是质数也不是合数")
用INT(SQRT(A1))代替A1减少整除的数目,来将待判断的数字增大。
热心网友
写代码来实现