跳到主要内容

C 编程:检查阿姆斯特朗数

要理解这个示例,你应该了解以下 C 语言编程 相关主题:

如果一个正整数满足下面的条件,它就被称为阿姆斯特朗数(阶数为 n):

abcd... = a^n + b^n + c^n + d^n + ...

对于一个三位数的阿姆斯特朗数,每位数字的立方和等于该数本身。例如,153 就是一个阿姆斯特朗数,因为:

153 = 1*1*1 + 5*5*5 + 3*3*3

检查三位数的阿姆斯特朗数

#include <stdio.h>
int main() {
int num, originalNum, remainder, result = 0;
printf("请输入一个三位数:");
scanf("%d", &num);
originalNum = num;

while (originalNum != 0) {
// remainder 存储了最后一位数字
remainder = originalNum % 10;

result += remainder * remainder * remainder;

// 移除原始数的最后一位
originalNum /= 10;
}

if (result == num)
printf("%d 是阿姆斯特朗数。", num);
else
printf("%d 不是阿姆斯特朗数。", num);

return 0;
}

输出

请输入一个三位数:371
371 是阿姆斯特朗数。

检查 n 位数的阿姆斯特朗数

#include <math.h>
#include <stdio.h>

int main() {
int num, originalNum, remainder, n = 0;
float result = 0.0;

printf("请输入一个整数:");
scanf("%d", &num);

originalNum = num;

// 在 n 中存储 num 的位数
for (originalNum = num; originalNum != 0; ++n) {
originalNum /= 10;
}

for (originalNum = num; originalNum != 0; originalNum /= 10) {
remainder = originalNum % 10;

// 将各个位上数字的 n 次幂的和存储在 result 中
result += pow(remainder, n);
}

// 如果 num 等于 result,则该数是阿姆斯特朗数
if ((int)result == num)
printf("%d 是阿姆斯特朗数。", num);
else
printf("%d 不是阿姆斯特朗数。", num);
return 0;
}

输出

请输入一个整数:1634
1634 是阿姆斯特朗数。

在这个程序中,首先计算了一个整数的位数并存储在 n 中。然后,使用 pow() 函数在第二个 for 循环的每次迭代中计算各个位数的幂。