探索C语言中的水仙花数及其计算方法

news2024/11/13 9:28:15

        在计算机科学与数学的交叉领域中,有一种特殊的整数被称为“水仙花数”,它是指一个三位数,其各位数字立方和等于该数本身。例如,153是一个典型的水仙花数,因为1³ + 5³ + 3³ = 1 + 125 + 27 = 153。

下面,我们通过一段C语言代码来深入解析如何找出100至999之间的所有水仙花数:

int main() {
    int i, a, b, c; // 定义整型变量i、a、b、c。其中i用于遍历100至999的所有数,a、b、c分别存储三位数的百位、十位和个位。

    for (i = 100; i <= 999; i++) { // 使用for循环逐个检查这个范围内的所有整数
        // 提取每位数字
        a = i / 100; // 利用整除运算获取百位数(整除结果自动舍去小数部分)
        b = (i / 10) % 10; // 先除以10得到前两位组成的数,再对10取余得到十位数
        c = i % 10; // 直接对10取余可得个位数
...

方法一:

// 计算每位数字的立方和
        // 方法一:直接进行乘法运算求立方
        if (a * a * a + b * b * b + c * c * c == i) {
            printf("%d 是水仙花数\n", i); // 如果满足条件,则输出该数为水仙花数
        }

方法二:

// 方法二:利用pow函数求立方
        // pow()是C语言标准库math.h中的内置函数,接受两个参数,返回第一个参数的第二个参数次方的结果
        if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i) {
            printf("%d 也是水仙花数\n", i); // 使用pow函数验证并输出水仙花数
        }

        我们首先定义了变量iabc,然后使用for循环遍历100到999的所有整数。对于每个数i,我们采用不同的方式提取出它的各个位上的数字:通过整除和取余操作实现手动分离,以及通过调用pow()函数计算各位置上的数字的立方。

两种验证方法都完成了相同的任务——将三位数的每一位数字分别立方后求和,并判断这个立方和是否等于原数。尽管在这种特定场景下直接使用乘法运算更为简洁高效,但pow()函数展示了另一种通用且强大的数学运算能力,适用于更广泛的指数运算场景。

运行这段代码后,将会输出100到999之间所有的水仙花数,同时演示了两种有效的计算方法。

注:

pow函数:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

0_项目git地址——正点原子minifly与crazyflie

1、说明&#xff1a; 在每个专栏的第一篇文章&#xff0c;笔者都会贴出项目的git地址&#xff0c;方便后来者学习和复现&#xff1b; 下面介绍两个项目的官网资料和git地址&#xff0c;最后给出两者的对比&#xff1b; 2、正点原子minifly (1)minifly官网资料下载中心&#…

【sgPasswordInput】自定义组件:带前端校验密码强度的密码输入框,能够提供密码强度颜色提示和文字提示

特性&#xff1a; 有密码强度颜色提示密码强度进度条提示支持设置默认输入提示和密码长度 sgPasswordInput源码 <template><div :class"$options.name" style"width: 100%"><el-inputstyle"width: 100%"ref"psw"type&…

untiy使用http下载资源

文章目录 提醒下载一个资源并保存到本地下载一张图片 提醒 部分API需要将Unity的 Edit/PrejectSetting/Player/OtherSetttings/AConfiguration/ApiCompatibilityLevel 设为.NetFramework 才可以使用 下载一个资源并保存到本地 private IEnumerator DownloadFormServer_IE(st…

后端 API 接口文档 Swagger 使用

Swagger 是什么 swagger是一款可以根据 restful 风格生成的接口开发文档&#xff0c;并且支持做测试的一款中间软件。 例如当我们在开发前后端分离项目时&#xff0c;当后端开发完一个功能想要测试时&#xff0c;若此时还没有相应的前端页面发起请求&#xff0c;可以通过 swag…

大数据Doris(五十二):SQL函数之数学函数

文章目录 SQL函数之数学函数 一、abs(double a)

软件测试大作业||测试计划+测试用例+性能用例+自动化用例+测试报告

xxx学院 2023—2024 学年度第二学期期末考试 《软件测试》&#xff08;A&#xff09;试题&#xff08;开卷&#xff09; 题目&#xff1a;以某一 web 系统为测试对象&#xff0c;完成以下文档的编写&#xff1a; &#xff08;满分 100 分&#xff09; &#xff08;1&am…

1.6PTA集练7-5~7-24、7-1、7-2,堆的操作,部落冲突(二分查找)

7-5 大師と仙人との奇遇 分数 20 #include<iostream> #include<queue> using namespace std; int n; long long ans0,num; priority_queue<long long,vector<long long>,greater<long long>>q;//记录之前买的,用小顶堆&#xff0c;最上面就是最…

c++学习:STL库(框架)+字符串模板类string+vector容器+list链表

目录 stl库 常用组件包括 字符串库 字符串模板类string 头文件 最常用的字符串模板类 字符串类型 模板原型 模板的成员数据类型 模板成员函数 有些函数会有重载&#xff0c;可以去下面网址查看std::basic_string - cppreference.comhttps://zh.cppreference.com/w/cp…

【python、pytorch】

什么是Pytorch Pytorch是一个基于Numpy的科学计算包&#xff0c;向它的使用者提供了两大功能。作为Numpy的替代者&#xff0c;向用户提供使用GPU强大功能的能力。做为一款深度学习的平台&#xff0c;向用户提供最大的灵活性和速度。 基本元素操作 Tenors张量&#xff1a;张量…

鸿蒙设备-开发板基础学习(BearPi-HM Micro)

theme: minimalism 每当学习一门新的编程语言或者上手一款新的开发板&#xff0c;在学习鸿蒙设备开发过程中&#xff0c;带大家写的第一个程序&#xff0c;通过这个程序&#xff0c;我们可以对鸿蒙设备开发的整个流程有一个初步的体验。BearPi-HM Micro开发板为例&#xff1a;…

127基于matlab的卡尔曼滤波在目标跟踪中应用仿真研究

基于matlab的卡尔曼滤波在目标跟踪中应用仿真研究&#xff0c;模拟目标真实轨迹 z&#xff0c;形成观测数据&#xff08;真实轨迹位置数据迭加上观测数据&#xff09; &#xff0c; 递推估计 &#xff0c;计算估计误差画出目标轨迹、测量数据、滤波数据曲线&#xff1b;滤波误差…

FPGA状态机学习

Verilog 是硬件描述语言&#xff0c;硬件电路是并行执行的&#xff0c;当需要按照流程或者步骤来完成某个功能时&#xff0c;代码中通常会使用很多个 if 嵌套语句来实现&#xff0c;这样就增加了代码的复杂度&#xff0c;以及降低了代码的可读性&#xff0c;这个时候就可以使用…

网络安全复习--简答整理

-----------------------------------------------------教材如上图------------------------------------------------------------ 1.对称加密和非对称加密各有什么特点&#xff1f;加密解密过程中有什么区别&#xff1f;优点P38【考】 对称加密的特点&#xff1a;在针对同一…

Android14之解决刷机报错:Can not load Android system. Your data may be corrupt(一百七十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

开启Android学习之旅-1

最近在学习《第一行代码 Android》&#xff0c;两天看书把所有代码都敲了一遍。由于之前没有接触过 Kotlin&#xff0c;导致了囫囵吞枣&#xff0c;跟着书会敲&#xff0c;离开就忘了。Android 大佬开发的各种框架、控件好像大部分都用了 Kotlin。看他们的源码&#xff0c;理解…

爬虫瑞数5案例:某通信

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 一、瑞数简介 瑞数动态安全 Botgate&#xff08;机器人防火墙&#xff09;以“动态安全”技术为核心&#xff0c;通过动态封装…

Javaweb之Mybatis的动态SQL的详细解析

3. Mybatis动态SQL 3.1 什么是动态SQL 在页面原型中&#xff0c;列表上方的条件是动态的&#xff0c;是可以不传递的&#xff0c;也可以只传递其中的1个或者2个或者全部。 而在我们刚才编写的SQL语句中&#xff0c;我们会看到&#xff0c;我们将三个条件直接写死了。 如果页面…

4.7 MEMORY AS A LIMITING FACTOR TO PARALLELISM

虽然CUDA寄存器和共享内存在减少对全局内存的访问次数方面非常有效&#xff0c;但必须注意保持在这些内存的容量范围内。这些内存是线程执行所需的资源形式。每个CUDA设备提供有限的资源&#xff0c;从而限制了给定应用程序可以同时驻留在SM中的线程数量。通常&#xff0c;每个…

第11章 GUI Page480~486 步骤二十七 “脏数据”与“新文档”状态维护

wxMyPainterFrame类定义中声明新的成员&#xff1a; 增加一个全局变量&#xff0c;初始化新成员&#xff1a; 先实现TrySaveFile() SaveFile()暂时为空实现 增加两个新的私有成员方法&#xff1a; wxMyPainterFrame类中&#xff0c;修改了“_items”的几个地方 ① 鼠标抬起时…

设计模式的艺术P1基础—2.3 类之间的关系

设计模式的艺术P1基础—2.3 类之间的关系 在软件系统中&#xff0c;类并不是孤立存在的&#xff0c;类与类之间存在各种关系。对于不同类型的关系&#xff0c;UML提供了不同的表示方式 1&#xff0e;关联关系 关联&#xff08;Association&#xff09;关系是类与类之间最常用…