编程算法实例-Armstrong数(阿姆斯特朗数)
水仙花数( Narcissistic number )也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数( Armstrong number ),水仙花数是指一个 3 位数,它的每个位上的数字的 3 次幂之和等于它本身 (例如: 1^3 + 5^3+ 3^3 = 153 )。
#include <stdio.h>
#include <stdbool.h>//
bool isArmstrongNum(int n) {// 1 位数int count = 0;int num = n;while (num != 0) {num = num / 10;count++;}// 2 每位数的n次方相加后的总和int sum = 0;num = n;while (num != 0) {int a = num % 10; // 最后一位数int len = count;int tmp = 1;while (len != 0) {tmp = tmp * a; // 每位数的n次方len--;}sum += tmp; // n位数的n次方之和num = num / 10;}// 3 不相等则不是if (origin != sum) {return false;}return true;
}int main()
{int n = 1634;printf("%d%s", n,(isArmstrongNum(n) ? "是阿姆斯特朗数" : "不是阿姆斯特朗数"));return 0;
}
153是阿姆斯特朗数
151不是阿姆斯特朗数
1634是阿姆斯特朗数