ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > 函数与公式 > 如何判断一个数是否是质数或合数?

如何判断一个数是否是质数或合数?

作者:绿色风 分类: 时间:2022-08-17 浏览:125
楼主
apolloh
Q:如何判断一个数是否是质数或合数?
A:如果除1以外任意正整数整除则为合数,反之为质数。 1为既不是质数也不是合数,2、3都是质数,除此外如果一个数能被2到小于其开方的最大整数整除,则为合数,否则为质数。判断质数的公式为:

  1. =IF(AND(A1>4,A1=INT(A1)),IF(OR(INT(A1/ROW(INDIRECT("2:"&INT(SQRT(A1)))))*ROW(INDIRECT("2:"&INT(SQRT(A1))))=A1),"合数","质数"),IF(OR(A1={2,3}),"质数","非质非合"))
在Excel 2007中该公式可用来判定的最大数为(2^20)^2,即2007工作表最大行数的平方。
2楼
刘志文
学习一下!!
3楼
chrisfang
黄版漏掉了一个数字1。
再给一个另外的公式:
  1. =IF(A1=1,"非质非合",IF((A1<4)+MIN(MOD(A1,ROW(INDIRECT("2:"& INT(A1^0.5))))),"质数","合数"))
4楼
apolloh
谢谢方兄纠正,1为非质非合,已更正。
5楼
zlxtl
Q:如何获得1-1000之间的质数,用一个公式完成
A:用MMULT和TRANSPOSE\SMALL等等配合
运算量很多,电脑差的话不太适合本公式

=SMALL(IF(MMULT((MOD(ROW($1:$1000),TRANSPOSE(ROW($1:$1000)))=0)*1,ROW($1:$1000)^0)<=2,ROW($1:$1000)),ROW(2:2))
6楼
zlxtl
换个思路
=SMALL(IF(MMULT(N(MOD(ROW($2:$999),COLUMN(B:ALK))=0),ROW($1:$998)^0)=1,ROW($2:$999),1000),ROW(A1))
7楼
dior
参观学习,慢慢理解。
8楼
Zaezhong
  1. =IF(A1=1,"非质非合",IF(SUM(N(INT(A1/ROW(INDIRECT("1:"&A1)))=A1/ROW(INDIRECT("1:"&A1))))>2,"合数","质数"))
9楼
dior
貌似>4是错误的。>3才行。不然4就漏了。
10楼
bluexuemei
学习版主们强大的公式!
11楼
sylzldd
版主的公式漏掉了4
12楼
传递
哪个公式是最佳的? 我扫盲阶段,功力不够,不知道哪个该是推荐的公式。期待黄版 提示一下。
13楼
larkzh
正确。
14楼
ifljh
我试了一下200000001显示是质数哦。
15楼
ifljh
我试了一下200000001是质数啊。可这明明是个合数。哪里出了问题呢?
16楼
ifljh
好像没用啊。=IF(A4="","",IF(A4=1,"非质非合",IF((A4<4)+MIN(MOD(A4,ROW(INDIRECT("2:"&INT(A4^0.5))))),"质数","合数")))

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap