在此示例中,您将学习查找用户输入的两个整数之间的所有Armstrong数字。
要理解此示例,您应该了解以下C语言编程主题:
一个正整数称为阿姆斯特朗数(n阶),如果
abcd... = an + bn + cn + dn +
对于3位的阿姆斯特朗数,每个数字的立方数之和等于数字本身。例如,153是Armstrong的数字,因为
153 = 1*1*1 + 5*5*5 + 3*3*3
在尝试该程序之前,请学习如何检查整数是否为Armstrong数字。
#include <math.h> #include <stdio.h> int main() { int low, high, number, originalNumber, rem, count = 0; double result = 0.0; printf("输入两个数字(间隔): "); scanf("%d %d", &low, &high); printf("%d和%d之间的阿姆斯壮数字为: ", low, high); //将数字从(low + 1)迭代到(high - 1) //在每次迭代中,检查数字是否为Armstrong for (number = low + 1; number < high; ++number) { originalNumber = number; //位数计算 while (originalNumber != 0) { originalNumber /= 10; ++count; } originalNumber = number; //结果包含个位数的n次幂的和 while (originalNumber != 0) { rem = originalNumber % 10; result += pow(rem, count); originalNumber /= 10; } //检查数字是否等于单个数字的n次幂之和 if ((int)result == number) { printf("%d ", number); } //重置值 count = 0; result = 0; } return 0; }
输出结果
输入两个数字(间隔): 200 2000 200和2000之间的阿姆斯壮数字为: 370 371 407 1634
在程序中,外循环从(low + 1)迭代到(high-1)。在每次迭代中,都会检查number是否为Armstrong数。
在外循环内部,首先计算一个整数的位数,并将其存储在中count。并且,各个数字的幂之和存储在result变量中。
如果number等于result,则该数字为阿姆斯壮数字。
注意:您需要在外部循环的每次迭代中将count和result重置为0。