水仙花数(所有自幂数)的实现详解-C语言
目录
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语言相关推荐
- C语言求水仙花数(自幂数)
C语言求水仙花数 什么是水仙花数 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身.例如:1^3 + 5^3+ 3^3 = 153 函数实现 代码如下: #define _CRT ...
- python 求解水仙花数,自幂数
百度百科一下:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). 水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花 ...
- 经典算法|水仙花数|自幂数
算法题目 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数( ...
- #转载:杨辉三角形实现过程详解-c语言基础
杨辉三角形实现过程详解-C语言基础 十一一个人 2018-12-26 06:45:45 6465 收藏 28 最后发布:2018-12-26 06:45:45首发:2018-12-26 06:45:4 ...
- DBus glib 各数据类型接收与发送详解—C语言(3)
DBus glib 各数据类型接收与发送详解-C语言(3) 动机 前置知识 正文 Python 测试服务 使用 C 实现复杂数据类型的传递 DICT_DICT ObjectPath_Dict_Stru ...
- 详解go语言的array和slice 【二】
上一篇 详解go语言的array和slice [一]已经讲解过,array和slice的一些基本用法,使用array和slice时需要注意的地方,特别是slice需要注意的地方比较多.上一篇的最后讲 ...
- 武林c语言,详解C语言中条件编译
预处理器提供条件编译,程序的不同部分可以在不同的条件下编译,从而产生不同的目标代码文件,这对于程序移植和调试非常有用,本文是武林技术频道小编给为大家带来的详解中条件编译,一起来了解一下吧! 通常情况, ...
- c语言malloc用法 数组,详解C语言用malloc函数申请二维动态数组的实例
详解C语言用malloc函数申请二维动态数组的实例 C语言在程序运行中动态的申请及释放内存十分方便,一维数组的申请及释放比较简单. Sample one #include int main() { c ...
- php怎么求最小公倍数,C++_详解C语言求两个数的最大公约数及最小公倍数的方法,求两个正整数的最大公约数nbs - phpStudy...
详解C语言求两个数的最大公约数及最小公倍数的方法 求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y) ...
- 你是真的“C”——详解C语言函数模块知识(上篇)
详解C语言函数模块知识(上篇)
最新文章
- Python工作记录
- text type dropdown list - INIT_DATA
- linux中 jdk 的卸载和安装[转]
- confluence 统计页面访问量插件Page View Tracker
- 区块链软件公司:你的区块链交易真的是匿名吗?
- Kafka从上手到实践-Kafka集群:重要配置和性能探讨 | 凌云时刻
- 计算机杀病毒软件的应用有哪些,电脑杀蠕虫病毒软件有哪些
- 考研数二高数基础笔记
- 干货分享——安卓USB通信
- 《东周列国志》第七十一回 晏平仲二桃杀三士 楚平王娶媳逐世子
- 计算广告学涉及的学科与技术
- qt java tcp_incomingConnection qtcpsocket
- 报错: com.alibaba.druid.pool.DruidDataSource : abandon connection, owner thread
- unity加载文件夹下的所有预制体
- 图库类小程序服务器配置,小程序生成图片库
- 10、netty结合websocket完成消息的单发和群发
- 案例:京东登录页面css创建
- 信息时代的必修课:冗余度(善用信息冗余成为沟通的高手)
- 绿色无广告版装机工具:微PE工具箱Win8/10内核版32/64位
- 计算机病毒不可能侵入rom吗,计算机试题选择题重点1