原文: https://www.programiz.com/c-programming/examples/check-armstrong-number
在此示例中,您将学习检查用户输入的整数是否是阿姆斯特朗数。
要理解此示例,您应该了解以下 C 编程主题:
如果一个正整数称为阿姆斯特朗数(阶数n),则
abcd... = a<sup>n</sup> + b<sup>n</sup> + c<sup>n</sup> + d<sup>n</sup> +
对于 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 digitremainder = originalNum % 10;result += remainder * remainder * remainder;// removing last digit from the orignal numberoriginalNum /= 10;}if (result == num)printf("%d is an Armstrong number.", num);elseprintf("%d is not an Armstrong number.", num);return 0;}
输出
Enter a three-digit integer: 371371 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 nfor (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 resultresult += pow(remainder, n);}// if num is equal to result, the number is an Armstrong numberif ((int)result == num)printf("%d is an Armstrong number.", num);elseprintf("%d is not an Armstrong number.", num);return 0;}
输出
Enter an integer: 16341634 is an Armstrong number.
在该程序中,首先计算一个整数的位数,并将其存储在n中。 并且,pow()函数用于计算第二for循环的每次迭代中各个数字的幂。
