// 1234 = 1^4 + 2^4 + 3^4 + 4^4; // 341 = 3^3 + 4^3 + 1^3 // 类似于水仙花数 #include <stdio.h> #include <math.h> int digitCount(int n) { //此函数用于获取整数的位数 int i = 0; do { n = n / 10; i++; } while ( n > 0 ); return i; } int isArmstrong(int n) { int digitNum = digitCount(n); int sum = 0; int temp = n; while (n > 0) { sum += pow(n % 10, digitNum); n = n / 10; } //n 已经不再是那个n return sum == temp; } int main() { int i; for ( i = 1; i < 5000; ++i ) { if (isArmstrong(i)) { printf("%d is Armstrong number ", i); } } return 0; }