Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 14149|回复: 12

[分享] 如何用函数公式判断一个数字是质数还是合数

[复制链接]
发表于 2015-5-29 07:41 | 显示全部楼层 |阅读模式
本帖最后由 一村之长 于 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,"合数","质数"))
05299.png

评分

参与人数 4 +34 金币 +15 收起 理由
ll565628963 + 1
李建军 + 6 校长威武!~~
蓝粆 + 15 + 15 村长妥妥的开始出书了~
心正意诚身修 + 12 謝謝村長的分享.贊一個

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-5-29 08:14 | 显示全部楼层
本帖最后由 心正意诚身修 于 2015-5-29 08:18 编辑

謝謝分享.學習了.
回复

使用道具 举报

发表于 2015-5-29 08:22 | 显示全部楼层
回复

使用道具 举报

发表于 2015-5-29 08:38 | 显示全部楼层
老村长, 把你的公式改成 :
=IF(OR(A2<2,INT(A2)<>A2),"非质非合",IF(OR(MOD(A2,ROW(INDIRECT("2:"&A2-1)))=0)*(A2<>2),"合数","质数"))
回复

使用道具 举报

 楼主| 发表于 2015-5-29 08:56 | 显示全部楼层
丢丢表格 发表于 2015-5-29 08:38
老村长, 把你的公式改成 :
=IF(OR(A2

谢谢丢丢大神指点{:011:},不过这个公式是为了解释给初学者看的,所以不宜用过多的技巧和省略字符
回复

使用道具 举报

发表于 2015-5-29 09:09 | 显示全部楼层
谢谢丢丢老师
回复

使用道具 举报

发表于 2015-5-29 10:13 | 显示全部楼层
{:22:} 么么  村长可以只除到判断数字的平方根 不用全部~
回复

使用道具 举报

 楼主| 发表于 2015-5-29 11:57 | 显示全部楼层
蓝粆 发表于 2015-5-29 10:13
么么  村长可以只除到判断数字的平方根 不用全部~

{:281:}是的,我昨晚在VBA板块看到相关的解题思路了,那样运算才是最快的
回复

使用道具 举报

发表于 2015-5-29 14:12 | 显示全部楼层
个人感觉再增加一个判断,因为公式长了一点,但我想速度上肯定快很多

评分

参与人数 1 +3 收起 理由
一村之长 + 3 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-5-29 14:26 | 显示全部楼层
蝶·舞 发表于 2015-5-29 14:12
个人感觉再增加一个判断,因为公式长了一点,但我想速度上肯定快很多

谢谢指点!蝶舞大师说得对,昨晚我也在VBA板块看到一个思路,判断的是1:A2/2里面的数能否被A2整除,这样的话计算的速度就会快一半 ,所以公式改成这样计算速度会快一点
=IF(OR(A2<2,INT(A2)<>A2),"非质非合",IF(SUMPRODUCT(N(MOD(A2,ROW(INDIRECT("1:"&INT(A2/2)+1)))=0))>2,"合数","质数"))
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 16:05 , Processed in 0.148536 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表