【C语言】输出100~999之间的所有“水仙花数”
2017-11-11 17:13
811 查看
“水仙花数”:
“水仙花数”又称为“阿姆斯特朗数”。如果一个n(n≥3)位数的各位数字的n次幂之和等于该数本身,则该数称为“水仙花数”。如:153=1³+5³+3³。
问题:输出100~999之间的所有“水仙花数”。
实现思路:
根据“水仙花数”的特点分析不难发现,只要拿到某个三位数(定义一个变量m,初始值设为100)的各位数字,再进行判断它们的立方和是否等于m,若等于,则输出m,否则,m自增1。上述过程是一个循环,只要m<=999,循环继续执行。
下面讨论m的各位数字如何获得。首先需要定义三个变量i,j,k,分别记录m的各位数字。
对于一个三位数m,其百、十、个位数字为i,j,k,则可知:i *100+j *10+k *1=m
百位数(i):因为m为一个三位数,所以m/100等于其百位数字。
十位数(j):若对m有m/10,则可以得到m的百位和十位组成的一个两位数,如:123/10=12。再用这个两位数减去i*10,便得到了十位数字j。
个位数(k):上面已经得到m的百位和十位,易得个位数为m-i*100-j *10。
程序代码:
输出结果:
于是,100~999范围内(三位数中)的“水仙花数”得到:153,370,371,407。
注:此题也可以用for循环来实现
“水仙花数”又称为“阿姆斯特朗数”。如果一个n(n≥3)位数的各位数字的n次幂之和等于该数本身,则该数称为“水仙花数”。如:153=1³+5³+3³。
问题:输出100~999之间的所有“水仙花数”。
实现思路:
根据“水仙花数”的特点分析不难发现,只要拿到某个三位数(定义一个变量m,初始值设为100)的各位数字,再进行判断它们的立方和是否等于m,若等于,则输出m,否则,m自增1。上述过程是一个循环,只要m<=999,循环继续执行。
下面讨论m的各位数字如何获得。首先需要定义三个变量i,j,k,分别记录m的各位数字。
对于一个三位数m,其百、十、个位数字为i,j,k,则可知:i *100+j *10+k *1=m
百位数(i):因为m为一个三位数,所以m/100等于其百位数字。
十位数(j):若对m有m/10,则可以得到m的百位和十位组成的一个两位数,如:123/10=12。再用这个两位数减去i*10,便得到了十位数字j。
个位数(k):上面已经得到m的百位和十位,易得个位数为m-i*100-j *10。
程序代码:
#include<stdio.h> #include<stdlib.h> int main() { int i, j, k; int m = 100; while (m<=999) { i = m / 100; j = m / 10 - i * 10; k = m - 100 * i - 10 * j; if (m == i*i*i + j*j*j + k*k*k) printf("%d\n", m); m++; } system("pause"); return 0; }
输出结果:
于是,100~999范围内(三位数中)的“水仙花数”得到:153,370,371,407。
注:此题也可以用for循环来实现
相关文章推荐
- C语言 求出100~999之间的所有“水仙花数”并输出
- C语言 求出100~999之间的所有“水仙花数”并输出
- C语言:求出0~999之间的所有“水仙花数”并输出
- 求100---999之间的所有水仙花数,并输出。提示:水仙花数是一个3位数的自然数,该数各位数的立方和等于该数本身
- C语言:求出0~999之间的所有“水仙花数”并输出
- C语言输出100到999中所有的水仙花数
- c语言:3种方法;求出0~999之间的所有“水仙花数”并输出。
- c语言:3种方法;求出0~999之间的所有“水仙花数”并输出。
- 用C语言求出0~999之间的所有的“水仙花数”并输出
- C语言实现枚举100~999之间的所有水仙花数
- 利用c语言求出0~999之间的所有“水仙花数”并输出
- Java算法——求100—999之间的所有水仙花数,并统计一共有几个
- C语言编程——输出100—200之间的所有素数和非素数
- 求出0~999之间的所有“水仙花数”并输出
- 求出0~999之间的所有“水仙花数”并输出。
- 输出0~999之间的所有“水仙花数”ps:“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身
- 求出0~999之间的所有“水仙花数”并输出
- C++ 输出100—999中所有的水仙花数
- 求出0~999之间的所有“水仙花数”并输出
- 求出0~999之间的所有“水仙花数”并输出