阿姆斯特朗数
阿姆斯特朗数也就是俗称的水仙花数,是指一个n位数,其各位数字的n次方之和等于该数本身。例如,153是一个水仙花数,因为153=13+53+33。请问100-10000所有水仙花数有哪些。
采用穷举法对范围之间的数字进行拆分,再按照阿姆斯特朗数(水仙花数)的性质计算并判断。
#include <stdio.h>
#include <math.h>
// 判断一个数是否为阿姆斯特朗数
int isArmstrong(int num) {
int originalNum = num;
int digit, sum = 0;
int n = (int)log10(num) + 1; // 计算num的位数
while (num > 0) {
digit = num % 10;
sum += (int)pow(digit, n);
num /= 10;
}
return sum == originalNum;
}
int main() {
int num;
for(num=100;num<10000;num++)if (isArmstrong(num)) {
printf("%d是阿姆斯特朗数\n", num);
}
return 0;
}