Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Excel公式练习54: 判断素数,并将不是素数的数分解为素数的乘积

Excel公式练习54: 判断素数,并将不是素数的数分解为素数的乘积

作者头像
fanjy
发布于 2020-03-25 07:39:11
发布于 2020-03-25 07:39:11
7700
举报
文章被收录于专栏:完美Excel完美Excel

导语:继续研究来自于excelxor.com的案例。建议结合本文阅读原文,会了解更多的细节,会有更大的收获。

本次的练习是:在列A中给定一个整数值,例如单元格A2,并且2 <= A2 <= 100,要在列B中(例如单元格B2)使用公式进行判断:如果列A中的值是素数,则返回“素数”;否则,返回该数的素数乘法分解式(其中小写的“x”表示乘法),如下图1所示。

图1

素数也称质数,是指在大于1的自然数中,除了1和它本身外不再有其他因数的自然数。

先不看答案,自已动手试一试。

公式

公式1:

=IF(--(SUMPRODUCT(--(FLOOR(A2,ROW(INDIRECT("$1:"&INT(SQRT(A2)))))=A2))=1),"素数",SUBSTITUTE(TRIM(Arry1&""&Arry2&" "&Arry3&""&Arry4&" "&Arry5&""&Arry6)," ","x"))

其中定义了5个名称,分别为:

名称:Arry1

引用位置:=1+MATCH(1,--(MOD($A2,ROW(INDIRECT("2:"&$A2-1)))=0),)

名称:Arry2

引用位置:=IFERROR(1+MATCH(1,--(MOD(Sheet1!$A2/Arry1,ROW(INDIRECT("2:"&Sheet1!$A2-1)))=0),),"")

名称:Arry3

引用位置:=IFERROR(1+MATCH(1,--(MOD(Sheet1!$A2/Arry1/Arry2,ROW(INDIRECT("2:"&Sheet1!$A2-1)))=0),),"")

名称:Arry4

引用位置:=IFERROR(1+MATCH(1,--(MOD(Sheet1!$A2/Arry1/Arry2/Arry3,ROW(INDIRECT("2:"&Sheet1!$A2-1)))=0),),"")

名称:Arry5

引用位置:=IFERROR(1+MATCH(1,--(MOD(Sheet1!$A2/Arry1/Arry2/Arry3/Arry4,ROW(INDIRECT("2:"&Sheet1!$A2-1)))=0),),"")

名称:Arry6

引用位置:=IFERROR(1+MATCH(1,--(MOD(Sheet1!$A2/Arry1/Arry2/Arry3/Arry4/Arry5,ROW(INDIRECT("2:"&Sheet1!$A2-1)))=0),),"")

真乃公式之王也!

公式2:

=IF(OR(AND(MOD(A2,1)=0,IFERROR(MOD(A2,$A$1:A1),1)<>0),A2=2),"素数",MATCH(0,MOD(A2,IFERROR((ROW($A$1:A1)-1)+SEARCH("素数",$B$1:B1),"")),0)&"x"&IF(LOOKUP(GCD(A2,A2/MATCH(0,MOD(A2,IFERROR((ROW($A$1:A1)-1)+SEARCH("素数",$B$1:B1),"")),0)),$A$1:A1,$B$1:B1)="素数",GCD(A2,A2/MATCH(0,MOD(A2,IFERROR((ROW($A$1:A1)-1)+SEARCH("素数",$B$1:B1),"")),0)),LOOKUP(GCD(A2,A2/MATCH(0,MOD(A2,IFERROR((ROW($A$1:A1)-1)+SEARCH("素数",$B$1:B1),"")),0)),$A$1:A1,$B$1:B1)))

使用了GCD函数,太神奇了!

公式3:

=IF((MATCH(TRUE,INT(A2/ROW(INDIRECT("2:"&A2)))=A2/ROW(INDIRECT("2:"&A2)),)+1)=A2,"素数", IF(VLOOKUP((A2/(MATCH(TRUE,INT(A2/ROW(INDIRECT("2:"&A2)))=A2/ROW(INDIRECT("2:"&A2)),)+1)),A:B,2,)="素数",MATCH(TRUE,INT(A2/ROW(INDIRECT("2:"&A2)))=A2/ROW(INDIRECT("2:"&A2)),)+1&"x"&(A2/(MATCH(TRUE,INT(A2/ROW(INDIRECT("2:"&A2)))=A2/ROW(INDIRECT("2:"&A2)),)+1)),MATCH(TRUE,INT(A2/ROW(INDIRECT("2:"&A2)))=A2/ROW(INDIRECT("2:"&A2)),)+1&"x"&VLOOKUP((A2/(MATCH(TRUE,INT((A2/ROW(INDIRECT("2:"&A2))))=A2/ROW(INDIRECT("2:"&A2)),)+1)),A:B,2,)))

这个公式重复利用了以前的计算结果。如果规定数字只在单元格A2中,在单元格B2中使用公式判断素数或进行乘数分解的话,那么这个公式就不适用了。

公式4:

=IF(OR(A2=2,A2=3,A2=5,A2=7),"素数",REPT("2x",LN(GCD(64,A2))/LN(2))&REPT("3x",LN(GCD(81,A2))/LN(3))&REPT("5x",LN(GCD(25,A2))/LN(5))&REPT("7x",LN(GCD(49,A2))/LN(7))&IF(A2/GCD(64,A2)/GCD(81,A2)/GCD(25,A2)/GCD(49,A2)=1,"",A2/GCD(64,A2)/GCD(81,A2)/GCD(25,A2)/GCD(49,A2)))

由于A2 <= 100,因此如果A2不是素数,则素数因子必须<sqrt(100)或10。该公式在数字分解式后面会产生一个额外的“x”,此外,对于大于10的数,该公式不会判断为素数,但对于不是素数的数会给出完美的因式分解相乘的式子。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MAC 安装mysql
一、下载安装包 https://dev.mysql.com/downloads/mysql/
week
2018/08/24
2.2K0
macOS 安装 mysql
打开下载页面 https://dev.mysql.com/downloads/mysql/5.7.html ,下载镜像安装文件。
我是一条小青蛇
2019/10/23
9.2K1
macOS 安装 mysql
mac 安装mysql详细教程
双击 mysql-5.7.20-macos10.12-x86_64.dmg 文件,加载镜像 双击 mysql-5.7.20-macos10.12-x86_64.pkg ,开始安装
网罗开发
2021/01/29
2.4K0
mac 安装mysql详细教程
图解Mac下如何安装管理MySQL
下载安装MySQL 1.访问MySQL官网:http://dev.mysql.com/downloads/ 2.下载 MySQL Community Server: 3.Select Platform
杨熹
2018/04/02
3.1K0
图解Mac下如何安装管理MySQL
MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑
 我们经常会在Linux上安装MySQL数据库,但是安装的时候总是会这里错,那里错,不顺利,今天整理了一下安装流程,连续安装来了两遍,没有遇到什么大错误,基本上十分钟左右可以搞定,教程如下。写着一篇文章主要是答应别人要帮忙给他在Linux上安装一下mysql(MySQL是5.7,Linux是centos7),然后自己提前实践一下,不要关键时刻掉链子。古有刘备三顾茅庐,今有宏哥三连数据库。快来看看发生什么事了!!!
北京-宏哥
2022/12/10
1.6K0
MySQL基础知识(二)-超详细 Linux安装MySQL5.7完整版教程及遇到的坑
最新版MySQL在MacOS上的安装与使用!
我们本文将采用最常规的方式,也就是安装包的方式进行安装,这也是我推荐给新手的安装方式,因为这种安装方式更直观更可控一些,比如对 MySQL 版本的选择和密码配置等,那接下来我们就直接开始吧。
磊哥
2020/10/27
2.1K0
最新版MySQL在MacOS上的安装与使用!
Mac 下 MySQL5.7.22的安装
1.使用安装包安装mysql(网上下载实在是太慢了,需要安装包的可以在文章底部留言,我发给您) 双击打开安装文件 双击pkg文件安装 一路向下,记得保存最后弹出框中的密码(它是你mysql root账
JavaEdge
2018/05/07
1K0
Mac 下 MySQL5.7.22的安装
mysql免安装版配置和一些常见问题
今天在Windows Server 2003下安装mysql,遇到不少问题。之前在另外两台服务器安装的时候也遇到了几个问题,最后找到不少文章解决了,记录一下。
sunonzj
2022/06/21
1.3K0
mysql免安装版配置和一些常见问题
Mac安装MySQL修改密码问题
mac安装Mysql有两种方式,即dmg安装包方式和命令行方式,dmg安装很正常,一路点击安装即可。但是,MySQL 5.7连接数据库突然发现并没有设置过密码,上网查一下才知道自从mysql5.7之后安装完后会自动生成一个随机的密码,那么有没有一种办法可以修改这个默认的初始密码呢?
xiangzhihong
2022/11/30
2.3K0
MySQL之安装与配置(mac版)
第一步:打开MySQL官网网址,https://www.mysql.com ,点击DOWNLOAD。
yuanshuai
2022/08/22
4K0
MySQL之安装与配置(mac版)
centos7安装部署mysql_8.0
2.1 访问mysql官网下载 https://dev.mysql.com/downloads/repo/yum/ 选择对应版本(linux7)下载
用户5013326
2022/11/14
7220
在Mac环境下配置php开发环境:Apache+php+MySql
此时在浏览器中输入http://localhost,会出现It works!的页面
用户1685462
2021/07/23
3.2K0
Mac-下-MySQL5-7-22的安装
苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(点击stop mysql server)
JavaEdge
2019/07/01
6660
Mac-下-MySQL5-7-22的安装
macOS 下git+ Java + Maven + MySql 开发环境
Git 官网下载:http://git-scm.com/download/mac 安装过程和 Windows 没啥区别,都是下一步下一步。 IntelliJ IDEA 对 Git 的支持很好,也不需要额外配置什么,IntelliJ IDEA 的 Git 操作都很便捷强烈使用 IntelliJ IDEA 作为 Git 的 GUI 操作工具。 Homebrew 方式(推荐):brew install git JDK 官网下载 JDK7:http://www.oracle.com/technetwork/java
IT小马哥
2020/09/21
1.3K0
Linux Centos上安装 MySQL 8.0.16
  因为我在我的Linux上安装的是Centos系统,本次安装对于我们这些不太熟悉Liunx操作系统的小白使用的是镜像下载安装,这样子我们只需要输入一些简单的命令即可,当然你也可以下载压缩包自己完成一些初始化的配置与安装。使用这种方式的话大家可以查看一些这篇博客进行安装,该作者写的相对的详细:https://blog.csdn.net/github_39533414/article/details/80144890。
追逐时光者
2019/08/28
1.6K0
Linux Centos上安装 MySQL 8.0.16
Mysql 8.0.18数据库安装教程
最近部署一台Server2012R2数据中心版监控服务器,数据库是mysql,准备工作如:下载数据库、配置环境变量、配置my.ini文件都正常,等到执行mysqld --initialize --console命令时就报错:“无法启动此程序,因为计算机中丢失MSVCP140.dll”、然后查询没有安装VC++程序;接着安装VC++2015的时候又提示缺少KB2999226补丁,然后安装这个补丁又要打其他补丁,都是坑……希望通过本文的介绍,让伙伴们跳过一个个坑,简单快速的安装和连接mysql。
吾爱运维
2022/09/29
1.4K0
Mysql 8.0.18数据库安装教程
Mac 下安装配置 MySql(Version 5.7.22) 环境变量
和尚我今天在 Mac 上安装了一下 MySql,当前版本为 mysql-5.7.22, 没想到耽误了挺长时间,把安装过程和遇到的问题整理一下,希望各位不要遇到我这样的问题。
阿策小和尚
2019/08/12
2.1K0
Mac 下安装配置 MySql(Version 5.7.22) 环境变量
MySQL数据库的各种安装方式【Windows,Linux,Docker】一次都告诉你
  MySQL数据库是作为程序员来说必备的一个组件,而安装相对来说又是非常繁琐的,所以本文就给大家整理下MySQL的各种安装操作。
用户4919348
2022/04/13
6680
MySQL数据库的各种安装方式【Windows,Linux,Docker】一次都告诉你
从头部署多个版本mysql
系统:centos7.3一台 软件版本:mysql-5.6.39/mysql-5.7.21 部署目录:/usr/local/ 数据目录:/data
陈不成i
2021/06/07
1.5K0
44.QT-安装MySQL、测试连接MySQL
在上章学习了42.QT-操作SQLite数据库后,发现MySQL和SQLite的语句都大致相同,所以本章只测试MySQL是否能使用
诺谦
2019/06/14
3.1K0
相关推荐
MAC 安装mysql
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档