阿姆斯特朗數也就是俗稱的水仙花數,是指一個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;
}