阿姆斯特朗数

284 阅读1分钟

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