一个正整数称为阿姆斯特朗数(
n 阶)如果
abcd... = an + bn + cn + dn +
对于 3 位数的阿姆斯特朗数,每位数的立方和等于该数本身。例如,153 是一个阿姆斯特朗数,因为
153 = 1*1*1 + 5*5*5 + 3*3*3
检查阿姆斯壮的三位数字
#include <stdio.h> int main() { int num, originalNum, remainder, result = 0; printf("Enter a three-digit integer: "); scanf("%d", &num); originalNum = num; while (originalNum != 0) { // remainder contains the last digit remainder = originalNum % 10; result += remainder * remainder * remainder; // removing last digit from the orignal number originalNum /= 10; } if (result == num) printf("%d is an Armstrong number.", num); else printf("%d is not an Armstrong number.", num); return 0; }
输出
Enter a three-digit integer: 371 371 is an Armstrong number.
检查阿姆斯壮的 n 位数
#include <math.h> #include <stdio.h> int main() { int num, originalNum, remainder, n = 0; float result = 0.0; printf("Enter an integer: "); scanf("%d", &num); originalNum = num; // store the number of digits of num in n for (originalNum = num; originalNum != 0; ++n) { originalNum /= 10; } for (originalNum = num; originalNum != 0; originalNum /= 10) { remainder = originalNum % 10; // store the sum of the power of individual digits in result result += pow(remainder, n); } // if num is equal to result, the number is an Armstrong number if ((int)result == num) printf("%d is an Armstrong number.", num); else printf("%d is not an Armstrong number.", num); return 0; }
输出
Enter an integer: 1634 1634 is an Armstrong number.
在这个程序中,首先计算一个整数的位数并存储在
n
中。而且,
pow()
函数用于计算第二个
for
循环的每次迭代中各个数字的幂。