目录

1、什么是水仙花数

2、题目描述

3、代码实现

4、求其他自幂数(拓展)

代码实现

5、封装函数实现(给出位数,求该位上的所有自幂数)

6、给出范围n,求出范围(0~n)之间所有自幂数

7、完整代码

1、什么是水仙花数

 “水仙花数”是指一个三位数,在数论中,水仙花数也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,是指一N位数,其各个数之N次方和等于该数。
 例如153、370、371及407就是三位数的水仙花数,其各个数之立方和等于该数:
153 = 1^3 + 5^3 + 3^3。
370 = 3^3 + 7^3 + 0^3。
371 = 3^3 + 7^3 + 1^3。
407 = 4^3 + 0^3 + 7^3。

2、题目描述

求出0~999之间的所有“水仙花数”并输出。
其各位数字的立方和确好等于该数本身,如;153=1+5+3 ? ,则153是一个“水仙花数”。

3、代码实现

#include<stdio.h>
#include<math.h>
int main()
{int sum = 0;for (int i = 100; i < 999; i++){//pow(a,b)=a^b ,头文件math.hint c = i / 100;          //百位 int b = (i / 10) % 10;   //十位int a = i % 10;         //个位sum = pow(a, 3) + pow(b, 3) + pow(c, 3);if (sum == i){printf("%d ",i);}}return 0;
}

4、求其他自幂数(拓展)

以四位自幂数举例(四叶玫瑰数),即四位数各位上的数字的四次方之和等于本身的数。

四位的自幂数共有3个1634,8208,9474。

代码实现

#include<stdio.h>
#include<math.h>
int main()
{int sum = 0;for (int i = 1000; i < 9999; i++){//pow(a,b)=a^b ,头文件math.hint d = i / 1000;          //千位int c = (i / 100)%10;          //百位 int b = (i % 100)/10;   //十位int a = i % 10;         //个位sum = pow(d, 4) + pow(a, 4) + pow(b, 4) + pow(c, 4);if (sum == i){printf("%d ", i);}}return 0;
}

5、封装函数实现(给出位数,求该位上的所有自幂数)

给出位数n,打印n位的自幂数

思路:

1、计算n位的数字范围(min,max)

2、在范围内一个个历遍,找出自幂数(当然效率会非常低)

void Find(int n)
{int m = n - 1;int min = pow(10, m);  //pow(a,b)=a^b ,头文件math.hint max = pow(10, n);for (int i = min ; i < max; i++){int num = i;int sum = 0; for (int j = 0; j < n; j++){sum +=pow((num % 10), n);num /= 10;}if (sum == i) printf("%d ", i); }
}

6、给出范围n,求出范围(0~n)之间所有自幂数

int FindSize(int x)//确定i的位数
{int size = 0;while (x){x /= 10;size++;}return size;
}
void Find2(int n)
{if (n > 0 && n < 10){for (int i = 1; i <= n; i++){printf("%d ", i);}}else if (n > 10){printf("1 2 3 4 5 6 7 8 9 ");for (int i = 11; i <= n; i++){int size = FindSize(i);int num = i;int sum = 0;for (int j = 0; j < size; j++){sum += pow((num % 10), size);//算位数的n次方和num /= 10;}if (sum == i)  printf("%d ", i);}}
}

7、完整代码


#include<stdio.h>
#include<math.h>
int FindSize(int x)//确定i的位数
{int size = 0;while (x){x /= 10;size++;}return size;
}
void Find2(int n)
{if (n > 0 && n < 10){for (int i = 1; i <= n; i++){printf("%d ", i);}}else if (n > 10){printf("1 2 3 4 5 6 7 8 9 ");for (int i = 11; i <= n; i++){int size = FindSize(i);int num = i;int sum = 0;for (int j = 0; j < size; j++){sum += pow((num % 10), size);//算位数的n次方和num /= 10;}if (sum == i)  printf("%d ", i);}}
}int main()
{int  n = 0;//求1-n之间所有的自幂数scanf_s("%d", &n);Find2(n);return 0;
}

以上就是所有的解析啦。如果对你有帮助,记得点赞

水仙花数(所有自幂数)的实现详解-C语言相关推荐

  1. C语言求水仙花数(自幂数)

    C语言求水仙花数 什么是水仙花数 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身.例如:1^3 + 5^3+ 3^3 = 153 函数实现 代码如下: #define _CRT ...

  2. python 求解水仙花数,自幂数

    百度百科一下:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). 水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花 ...

  3. 经典算法|水仙花数|自幂数

    算法题目 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数( ...

  4. #转载:杨辉三角形实现过程详解-c语言基础

    杨辉三角形实现过程详解-C语言基础 十一一个人 2018-12-26 06:45:45 6465 收藏 28 最后发布:2018-12-26 06:45:45首发:2018-12-26 06:45:4 ...

  5. DBus glib 各数据类型接收与发送详解—C语言(3)

    DBus glib 各数据类型接收与发送详解-C语言(3) 动机 前置知识 正文 Python 测试服务 使用 C 实现复杂数据类型的传递 DICT_DICT ObjectPath_Dict_Stru ...

  6. 详解go语言的array和slice 【二】

    上一篇  详解go语言的array和slice [一]已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲 ...

  7. 武林c语言,详解C语言中条件编译

    预处理器提供条件编译,程序的不同部分可以在不同的条件下编译,从而产生不同的目标代码文件,这对于程序移植和调试非常有用,本文是武林技术频道小编给为大家带来的详解中条件编译,一起来了解一下吧! 通常情况, ...

  8. c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例

    详解C语言用malloc函数申请二维动态数组的实例 C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include int main() { c ...

  9. php怎么求最小公倍数,C++_详解C语言求两个数的最大公约数及最小公倍数的方法,求两个正整数的最大公约数nbs - phpStudy...

    详解C语言求两个数的最大公约数及最小公倍数的方法 求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y) ...

  10. 你是真的“C”——详解C语言函数模块知识(上篇)

    详解C语言函数模块知识(上篇)

最新文章

  1. Python工作记录
  2. text type dropdown list - INIT_DATA
  3. linux中 jdk 的卸载和安装[转]
  4. confluence 统计页面访问量插件Page View Tracker
  5. 区块链软件公司:你的区块链交易真的是匿名吗?
  6. Kafka从上手到实践-Kafka集群:重要配置和性能探讨 | 凌云时刻
  7. 计算机杀病毒软件的应用有哪些,电脑杀蠕虫病毒软件有哪些
  8. 考研数二高数基础笔记
  9. 干货分享——安卓USB通信
  10. 《东周列国志》第七十一回 晏平仲二桃杀三士 楚平王娶媳逐世子
  11. 计算广告学涉及的学科与技术
  12. qt java tcp_incomingConnection qtcpsocket
  13. 报错: com.alibaba.druid.pool.DruidDataSource : abandon connection, owner thread
  14. unity加载文件夹下的所有预制体
  15. 图库类小程序服务器配置,小程序生成图片库
  16. 10、netty结合websocket完成消息的单发和群发
  17. 案例:京东登录页面css创建
  18. 信息时代的必修课:冗余度(善用信息冗余成为沟通的高手)
  19. 绿色无广告版装机工具:微PE工具箱Win8/10内核版32/64位
  20. 计算机病毒不可能侵入rom吗,计算机试题选择题重点1

热门文章

  1. Git之版本回退和分支合并
  2. Django建立一个音乐网站(一)
  3. python 修改图片尺寸 留白_python等比压缩图片到固定大小,不足的留白
  4. 文本数据下的用户画像
  5. win10向右键新建中添加可创建的文件类型
  6. 十大排序算法(C++)(时间复杂度O(nlogn)篇:希尔排序、堆排序、快速排序、归并排序)
  7. 程序媛 :逛 GitHub 开源项目吗? 很沙雕的那种!
  8. dos(cmd)命令
  9. 4米乘以12米CAD图_建筑专业CAD识图实例讲解
  10. 如何在Java中实现画图(图文并茂)(内附美丽的分型图片哦)