Python案例--水仙花数的探索之旅

一、引言

水仙花数,也称为阿姆斯特朗数,是一种特殊的三位数,其各位数字的立方和等于其本身。例如,153就是一个水仙花数,因为 13+53+33=15313+53+33=153。这种数字的发现不仅展示了数字的内在美,也激发了人们对数学的好奇心和探索欲。

二、什么是水仙花数?

水仙花数是一个三位数,它的每一位数字的立方和等于它本身。这种数的命名来源于它们的独特性质,就像水仙花一样,它们在数学的花园中独自绽放。

三、水仙花数的发现

水仙花数的发现可以追溯到20世纪初,但它们真正被广泛认识和研究是在20世纪中叶。数学家们通过研究数字的性质,发现了这类特殊的三位数。

四、如何找到水仙花数?

要找到所有的水仙花数,我们可以编写一个简单的程序或使用数学方法来检查每一个三位数。以下是寻找水仙花数的步骤:

  1. 确定范围:水仙花数是三位数,所以范围是100到999。
  2. 分解数字:对于每一个数字,将其分解为个位、十位和百位。
  3. 计算立方和:计算每一位数字的立方,然后将它们相加。
  4. 比较结果:如果立方和等于原始数字,那么这个数字就是一个水仙花数。

五、编程实现

(一)、对于编程爱好者来说,实现一个查找水仙花数的程序是一个有趣的挑战。以下是使用Python语言的一个简单示例,用户可以输入一个数字,程序会检查这个数字是否是水仙花数:

def is_narcissistic(num):# 分解数字hundreds = num // 100tens = (num // 10) % 10ones = num % 10# 计算立方和return num == (hundreds ** 3 + tens ** 3 + ones ** 3)# 用户输入
num = int(input("请输入一个三位数: "))
if 100 <= num <= 999 and is_narcissistic(num):print(f"{num} 是一个水仙花数。")
else:print(f"{num} 不是一个水仙花数。")

(二)、要找出所有的水仙花数,我们可以编写一个程序来遍历所有的三位数,并检查每一个数是否满足水仙花数的条件。以下是实现这一功能的Python代码:

for i in range(100, 1000):  # 遍历100到999之间的所有整数(三位数)s = str(i)  # 将数字转换为字符串,以便可以访问每一位one = int(s[-1])  # 获取个位数字,字符串索引从0开始,所以-1是最后一个字符ten = int(s[-2])  # 获取十位数字,-2是倒数第二个字符hun = int(s[-3])  # 获取百位数字,-3是倒数第三个字符if i == one**3 + ten**3 + hun**3:  # 检查这个数是否等于各位数字的立方和print(i)  # 如果是水仙花数,则打印出来

六、运行结果

(一)、第一个代码 

(二)、第二个代码 

七、代码解释

(一)、第一个代码

  1. 定义函数def is_narcissistic(num): 这行代码定义了一个函数,用于检查一个数字是否是水仙花数。

  2. 分解数字

    • hundreds = num // 100:将数字除以100,得到百位上的数字。
    • tens = (num // 10) % 10:首先将数字除以10,然后对10取余数,得到十位上的数字。
    • ones = num % 10:将数字对10取余数,得到个位上的数字。
  3. 计算立方和

    • return num == (hundreds ** 3 + tens ** 3 + ones ** 3):这行代码计算百位、十位和个位数字的立方和,然后与原始数字进行比较,如果相等则返回True,否则返回False。
  4. 用户输入

    • num = int(input("请输入一个三位数: ")):这行代码提示用户输入一个三位数,并将其转换为整数。
  5. 检查和输出结果

    • if 100 <= num <= 999 and is_narcissistic(num)::这行代码首先检查用户输入的数字是否在100到999之间,然后调用is_narcissistic函数检查它是否是水仙花数。
    • print(f"{num} 是一个水仙花数。"):如果输入的数字是水仙花数,打印相应的消息。
    • print(f"{num} 不是一个水仙花数。"):如果输入的数字不是水仙花数,打印相应的消息。

(二)、 第二个代码

  1. 遍历三位数for i in range(100, 1000): 这行代码遍历从100到999的所有整数,即所有的三位数。

  2. 数字转字符串s = str(i) 将当前数字转换为字符串,以便能够通过索引访问每一位数字。

  3. 获取每一位数字

    • one = int(s[-1]) 获取个位数字。
    • ten = int(s[-2]) 获取十位数字。
    • hun = int(s[-3]) 获取百位数字。
  4. 计算立方和并比较if i == one**3 + ten**3 + hun**3: 这行代码计算各位数字的立方和,并与原数字进行比较。

  5. 输出结果:如果条件满足,即该数字是水仙花数,则通过print(i)输出。

八、数学之美

水仙花数不仅仅是一个数学概念,它们也是数学之美的体现。它们展示了数字之间复杂的关系和内在的和谐。通过研究这些数字,我们可以更深入地理解数学的本质。

九、结论

水仙花数是数学中的一个有趣现象,它们的存在让我们对数字有了更深的认识。无论是通过编程还是数学方法,寻找水仙花数都是一个既有趣又富有教育意义的活动。这些数字的发现和研究,不仅增加了我们对数学的认识,也激发了我们对数学世界的好奇心。

通过这篇文章,我们不仅了解了水仙花数的定义和如何找到它们,还探讨了它们在数学中的意义和美。希望这能激发你对数学的进一步探索和热爱。

!仅供参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/437589.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Element-plus安装及其基础组件使用

简而言之&#xff0c;在main.js中导出以下库,仅此&#xff0c;搞多了出错难排查 import ElementPlus from element-plus //导入ElementPlus 模块 import element-plus/dist/index.css //引入样式 app.use(ElementPlus) //注册库就能使用了 Element Plus 是一个基于 Vue 3 的组件…

《Linux从小白到高手》理论篇(十一):Linux的系统环境管理

值此国庆佳节&#xff0c;深宅家中&#xff0c;闲来无事&#xff0c;就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。 环境变量 linux系统下&#xff0c;如果你下载并安装了应用程序&#xff0c;很有可能在键入它的名称时出现“command not found”的提示内容。如果每…

2024必备英语在线翻译工具推荐

英语在线翻译工具就如同一位随时待命的语言助手&#xff0c;为我们打破语言障碍&#xff0c;搭建起沟通的桥梁。接下来&#xff0c;让我们一起深入了解这些英语在线翻译工具的丰富功能及其为我们带来的便利。 1.福昕在线翻译 链接直达>>https://fanyi.pdf365.cn/doc …

命令按钮QLink

主要作用用来点击后可以自动打开系统的网页浏览器&#xff0c;跳转到指定的网页 常用方法 文本 //获取和设置文本 QString text() const void setText(const QString &text)描述信息 //获取和设置描述文本 QString description() const void setDescription(const QSt…

【RabbitMQ】面试题

在本篇文章中&#xff0c;主要是介绍RabbitMQ一些常见的面试题。对于前几篇文章的代码&#xff0c;都已经在码云中给出&#xff0c;链接是mq-test: 学习RabbitMQ的一些简单案例 (gitee.com)&#xff0c;如果存在问题的话欢迎各位提出&#xff0c;望共同进步。 MQ的作用以及应用…

【web安全】——XXE漏洞

1.XML基础 1.1.XML简介 XML被称为可扩展标记语言&#xff0c;与HTML类似&#xff0c;但是HTML中的标签都是预定义(预先定义好每个标签的作用)的&#xff0c;而XML语言中的标签都是自定义(可以自己定义标签的名称、属性、值、作用)的;HTML中的标签可以是单标签&#xff0c;而X…

SpringMVC源码-SpringMVC框架中Spring父容器和SpringMVC子容器加载的流程以及SpringMVC九大内置组件的初始

一、Spring父容器启动 SpringMVC 的项目结构如下: applicationContext.xml spring的配置文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.o…

机器学习西瓜书笔记(十三) 第十三章半监督学习+代码

第十三章 13 半监督学习13.1 未标记样本13.3.1 小结 13.2 生成式方法13.2.1 小结 13.3 半监督SVM13.3.1 小结 13.4 图半监督学习13.4.1 小结 13.5 基于分歧的方法13.5.1 小结 13.6 半监督聚类13.6.1 小结 13.7 代码&#xff1a;手写数据集上的标签传播-性能展示章末小结 13 半监…

数据结构——初识树和二叉树

线性结构是一对一的关系&#xff0c;意思就是只有唯一的前驱和唯一的后继&#xff1b; 非线性结构&#xff0c;如树形结构&#xff0c;它可以有多个后继&#xff0c;但只有一个前驱&#xff1b;图形结构&#xff0c;它可以有多个前驱&#xff0c;也可以有多个后继。 树的定义…

变电站红外检测数据集 1180张 变电站红外 标注voc yolo 13类

变电站红外检测数据集 1180张 变电站红外 标注voc yolo 13类 变电站红外检测数据集 名称 变电站红外检测数据集 (Substation Infrared Detection Dataset) 规模 图像数量&#xff1a;1185张图像。类别&#xff1a;13种设备类型。标注个数&#xff1a;2813个标注。 数据划分…

多模态RAG实现

在标准 RAG 中&#xff0c;输入文档包含文本数据。LLM 利用上下文学习&#xff0c;通过检索与所提查询上下文相匹配的文本文档块来提供更相关、更准确的答案。 但是&#xff0c;如果文档包含图像、表格、图表等以及文本数据&#xff0c;该怎么办&#xff1f; 不同的文档格式包…

华为GaussDB数据库之Yukon安装与使用

一、Yukon简介 Yukon&#xff08;禹贡&#xff09;&#xff0c;基于openGauss、PostgreSQL、GaussDB数据库扩展地理空间数据的存储和管理能力&#xff0c;提供专业的GIS&#xff08;Geographic Information System&#xff09;功能&#xff0c;赋能传统关系型数据库。 Yukon 支…

linux桌面软件(wps)内嵌到其他窗口

程序测试环境是&#xff1a;slackware系统&#xff0c;属于linux系统&#xff0c;有桌面&#xff08;Xface Session&#xff09;。系统镜像是&#xff1a;slackware64-15.0-install-dvd.iso。qt、c代码实现。 程序功能&#xff1a;将已经打开的wps&#xff08;word、pdf等都可…

Android SystemUI组件(09)唤醒亮屏 锁屏处理流程

该系列文章总纲链接&#xff1a;专题分纲目录 Android SystemUI组件 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节持续迭代之前章节的思维导图&#xff0c;主要关注左侧上方锁屏分析部分 唤醒亮屏 即可。 Power按键的处理逻辑最终是由PhoneWindowManager来…

Watchdog Timers(WDT)

文章目录 1. 介绍2. Feature List3. 概述3.1. Safety Watchdog3.2. CPU Watchdog 4. 看门狗定时器功能5. Endinit Functions5.1 Password Access to WDTxCON05.1.1 Static Password5.1.2 Automatic Password Sequencing 5.2 Check Access to WDTxCON05.3 Modify Access to WDTx…

[C++]使用C++部署yolov11目标检测的tensorrt模型支持图片视频推理windows测试通过

官方框架&#xff1a; https://github.com/ultralytics/ultralytics yolov8官方最近推出yolov11框架&#xff0c;标志着目标检测又多了一个检测利器&#xff0c;于是尝试在windows下部署yolov11的tensorrt模型&#xff0c;并最终成功。 重要说明&#xff1a;安装环境视为最基…

Tiny-universe手戳大模型TinyRAG--task4

TinyRAG 这个模型是基于RAG的一个简化版本&#xff0c;我们称之为Tiny-RAG。Tiny-RAG是一个基于RAG的简化版本&#xff0c;它只包含了RAG的核心功能&#xff0c;即Retrieval和Generation。Tiny-RAG的目的是为了帮助大家更好的理解RAG模型的原理和实现。 1. RAG 介绍 LLM会产…

Halcon基础系列1-基础算子

1 窗口介绍 打开Halcon 的主界面主要有图形窗口、算子窗口、变量窗口和程序窗口&#xff0c;可拖动调整位置&#xff0c;关闭后可在窗口下拉选项中找到。 2 显示操作 关闭-dev_close_window() 打开-dev_open_window (0, 0, 712, 512, black, WindowHandle) 显示-dev_display(…

超级干货:Air780E之RS485通信篇,你学会了吗?

今天&#xff0c;我们来学习低功耗4G模组Air780E的RS485通信&#xff0c;同学们&#xff0c;你学习了吗&#xff1f; 一、RS485简介 物联网&#xff08;IoT&#xff09;在工业场景中的应用越来越广泛&#xff0c;而RS485是一种常见的通信协议&#xff0c;广泛应用于工业自动…

快手:数据库升级实践,实现PB级数据的高效管理|OceanBase案例

本文作者&#xff1a;胡玉龙&#xff0c;快手技术专家 快手在较初期采用了OceanBase 3.1版本成功替换了多个核心业务、数百套的MySQL集群。至2023年&#xff0c;快手的数据量已突破800TB大关&#xff0c;其中最大集群的数据量更是达到了数百TB级别。为此&#xff0c;快手将数据…