点击上方 蓝字关注我们

大家好,我是阿汤哥。

看知乎上有朋友说还不明白怎么判断水仙花数,今天我们就来看看这个问题。(PS:“求1000以内的水仙花数”这道题阿汤哥记忆犹新。到现在还记得这是我大一上学期期末考试的编程题。)

怎么求水仙花数?

首先给出水仙花数定义。

水仙花数 定义

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。

怎么判断一个三位整数是不是水仙花数呢?我们根据它的定义来判断,只要把个位数、十位数、百位数分别取出来,然后做立方和,判断立方和是否等于这个数本身。

现在难点在于,怎么编程求一个三位数的个位数、十位数、百位数?

我们这样来求:

假设一个三位数m=132,我们这样来求它的个十百位数:

求 个十百位数

1、求它的个位数,用这个数对10求余数,个位数a=132%10= 2

2、求它的十位数,把这个数先除以10,商等于13,商13再对10求余数,得到十位数b=13%10=3

3、求它的百位数,把这个数对100求商,百位数c=132/100=1

我们来C语言编程实现“求1000以内的水仙花数”,下面是完整代码:

C语言代码

/** * Author: 阿汤哥 * 微信公众号:C语言修仙 * 功能: 求1000以内的水仙花数 */

# include # include 

/*** is_narcissus_number: 判断一个整数是不是素数** @m: 待判断是不是水仙花数的三位数** 返回1:是素数;返回0:不是素数*/int is_narcissus_number(int m){    int a, b, c;

    c = m % 10;     //个位数    b = (m/10) % 10;  //十位数    a = m / 100;    //百位数

    if (m == (pow(a, 3)+ pow(b, 3)+ pow(c, 3)))        return 1;    else        return 0;}

int main(){    int m, a, b, c;

    //循环判断100~999每个数,如果是水仙花数,那么把它打印出来    for (int i = 100; i 1000; i++)    {        if (is_narcissus_number(i) == 1)        {            printf("%d 是水仙花数;\n", i);        }    }

    return 0;}

运行结果

往期推荐好文

★C语言编程工具的选择★i++和++i有什么区别?★「建议收藏」C语言编程判断回文数★看完你就明白:什么情况下该用int main(int argc, char *argv[])而不是int     main(void)★C语言编程:打印一个圆形★福利:50本C语言电子书免费送了!★C语言编程求解:1到1000之间所有的素数

点个在看 你最好看

C++中如何读取一个数的位数_求1000以内的水仙花数相关推荐

  1. C++中如何读取一个数的位数_初中数学:近似数和平均数知识点总结及练习

    ​ 近 似 数 一个数与准确数相近,且比准确数略多或略少些,这一个数称之为近似数. 一个近似数四舍五入到哪一位,那么就说这个近似数精确到哪一位,从左边第一个不是0的数字起到精确的数位止的所有数止. 如 ...

  2. C++中如何读取一个数的位数_C语言编写程序求水仙花数

    C语言编写程序求水仙花数 水仙花数是一个数学问题,其实质是一个三位数,个位数的立方加十位数的立方加百位数的立方之和等于这个三位数本身.例如153=1*1*1+5*5*5+3*3*3,即153=1+12 ...

  3. 怎么在Java里辨别小数_求教java中如何判断一个数是不是小数,求详细代码及解释...

    求教java中如何判断一个数是不是小数,求详细代码及解释 关注:62  答案:2  mip版 解决时间 2021-01-29 22:49 提问者孤酒醉人心 2021-01-29 03:13 求教jav ...

  4. 2021-04-09编程求1000以内的所有“完数”。所谓“完数”是指一个数恰好等于它的因子之和。例如,6是完数,因为6=1+2+3

    编程求1000以内的所有"完数".所谓"完数"是指一个数恰好等于它的因子之和.例如,6是完数,因为6=1+2+3 #include"stdio.h&q ...

  5. java习题4_6水仙花数是指其个位、十位和百位三个数字的立方和等于这个三位数本身,求出所有的水仙花数。

    水仙花数是指其个位.十位和百位三个数字的立方和等于这个三位数本身,求出所有的水仙花数. public class for4_6 {public static void main(String[] ar ...

  6. Java实现求出所有的水仙花数,水仙化数为3位数,并且每位上的数字的立方和等于该数本身

    public class Main {/*** @author jadexu* @// TODO: 2020/12/26* 求出所有的水仙花数,水仙化数为3位数,并且每位上的数字的立方和等于该数本身* ...

  7. c语言n位水仙花数简书,Kotlin中函数式编程API(8)求阶乘和计算水仙花数

    求阶乘 计算水仙花数 前面介绍了很多函数,下面两个需求使用前面的函数将变得简单清晰. 一.求阶乘 求阶乘通常会使用递归函数调用,这比较影响性能,可以通过前面介绍的 reduce 函数实现. fun f ...

  8. 升序输出三个数_C语言入门经典例题:求100~999的水仙花数

    ​C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制). C++,首要考虑的 ...

  9. 中如何对一个数取余_如何找到自己在一个城市中的定位?

    更多资讯,关注微信公众号:好房U购四川. 如何找到自己在一个城市中的定位? 最近,各大企业都纷纷启动了校招工作.有条件的,全国都在跑:至少,川内都要跑一跑. 而毕业生最迷茫的,不过这两个问题: 北上广 ...

最新文章

  1. 局部邻域搜索-爬山法,模拟退火,禁忌,迭代局部搜索,变邻域局部搜索的简单阐释
  2. php编写一个学生类_PHP实现简单的学生信息管理系统(web版)
  3. CREATE TABLESPACE
  4. linux解压war包
  5. centos7离线安装mysql_Red Hat6.4离线安装mysql安装手册
  6. 剑指offer全套题解:Python版
  7. 如何落地云原生DevOps?
  8. java get cookies_Java Cookie.getDomain方法代码示例
  9. adobe reader xi补丁_adobe reader
  10. Oracle 10g安装 (Windows平台)
  11. 数据告诉你,谁是2019年最硬核公链?
  12. 数商云:疫情之下钢铁行业的数字化转型之道
  13. CRISPR基因编辑技术获诺奖,人类的福音还是灾难?
  14. 魔兽世界燃烧的远征服务器状态,6月2日加入“燃烧的远征” 立刻了解《魔兽世界》经典怀旧服的服务器抉择...
  15. SEO优化中关键词密度和布局的重要性
  16. php推送手机,PHP_解析php做推送服务端实现ios消息推送,准备工作1.获取手机注册应用 - phpStudy...
  17. 数据库原理与技术 作业及答案 复习用
  18. Zigbee OSAL睡眠管理
  19. 【LOJ#10115,tyvj1473】校门外的树(第3次升级)
  20. VVIC平台API接口:item_get - 根据ID取商品详情

热门文章

  1. 【 Grey Hack 】万金油脚本:从路由器获取Password
  2. C 与 JAVA 的对比分析
  3. React开发(226):默认方法返回一个新的参数两个括号
  4. 前端学习(3059):vue+element今日头条管理-优化文章状态
  5. 前端学习(3012):vue+element今日头条管理--axios的create字段
  6. 前端学习(2987):vue+element今日头条管理--案例演示
  7. [vue] 你了解axios的原理吗?有看过它的源码吗?
  8. 前端学习(2343):理解virtaldom和key
  9. 前端学习(2165):vuecli3配置文件的修改和查看
  10. 前端学习(1983)vue之电商管理系统电商系统之清空表格数据