1 题目
功能:阿姆斯特朗数
描述:打印从100到999之间所有的阿姆斯特朗数
2 思路
阿姆斯特朗数
如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153
水仙花数
当n=3时,又称水仙花数,特指一种三位数,其各个数之立方和等于该数。 水仙花数共有4个,分别为:153、370、371、407
3 代码
#include <stdio.h>
#include <stdlib.h>
/**
功能:阿姆斯特朗数
描述:打印从1到10000之间所有的阿姆斯特朗数
**/
int main(int argc, char const *argv[]) {
int i, j, k, n;
for (i = 1; i < 10000; i++) { // 遍历从 1 到 10000 的阿姆斯特朗数
j = i % 10; // 分离出个位上的数
k = i / 10 % 10; // 分离出十位上的数
n = i / 100; // 分离出百位上的数
if (j *j * j + k * k * k + n * n * n == i) // 进行判断各位上的立方和是否等于遍历数本身
printf("%5d", i);
}
printf("\n");
}
示例结果:
$ gcc ex088.c -o demo
$ ./demo
1^3 + 5^3 + 3^3 = 153
3^3 + 7^3 + 0^3 = 370
3^3 + 7^3 + 1^3 = 371
4^3 + 0^3 + 7^3 = 407