c编程之求出水仙花数
2017-12-12 16:10
369 查看
水仙花数
求出0~999之间的所有“水仙花数”并输出。“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。这道题出现在谭浩强c程序设计中,算是c语言基础中比较经典的一道题,算法并不复杂。
/*
在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一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。
*/
算法实现
#include <stdio.h> #include <windows.h> #include <math.h> int main() { int i = 0; int count = 0; int tmp = 0; /* 求出10000以内的水仙花数 */ for (i = 0; i < 10000; i++) { int sum = 0; tmp = i; count = 0; while (tmp) { count++; tmp = tmp / 10; } tmp = i; while (tmp) { sum += pow((tmp % 10), count); tmp = tmp / 10; } if (sum == i) { printf("%d\n", i); } } system("pause"); return 0; } #include <stdio.h> #include <windows.h> #include <math.h> int main() { int i = 0; int count = 0; int tmp = 0; /* 求出10000以内的水仙花数 */ for (i = 0; i < 10000; i++) { int sum = 0; tmp = i; count = 0; while (tmp) { count++; tmp = tmp / 10; } tmp = i; while (tmp) { sum += pow((tmp % 10), count); tmp = tmp / 10; } if (sum == i) { ` printf("%d\n", i); } } system("pause"); return 0; }
分析:实际上就是理解水仙花数是如何判定的,再循环体内先求出该数的位数,在将每一位数求出来,求出它们的次方和再与本数比较相等就输出即可。需要注意的地方就是 在循环体内改变了tmp的值,在tmp进入第二个循环之前必须重新赋值,包括count也是如此。
相关文章推荐
- 编程菜鸟的日记-初学尝试编程-水仙花数
- 80x86 汇编语言编程:寻找水仙花数
- 5----编程打印水仙花数
- C语言编程--水仙花数
- Java基础编程之打印水仙花数
- python基础编程_10_生成水仙花数
- 用C语言编程求水仙花数
- 0基础学编程之输出菱形,水仙花数,计算某个数字的前n项和,检测花括号是否成对出现
- 50道编程小题目之【水仙花数】
- C编程之旅:打印水仙花数
- 【编程练习】水仙花数
- Java基础编程3:水仙花数
- Windows平台下GCC编程之打印所有的“水仙花数”,所谓“水仙花数”是指一个三位正整数,其各位数字的立方和等于该数本身。
- 2.编程将0-1000所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
- 五十道编程题目03 打印水仙花数
- 编程小题3→水仙花数
- Linux shell编程求3位数水仙花数
- Java\Scala\Python三种语言求解经典编程实例(一)——求水仙花数
- Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)
- 编程基础刷题(一)