一个 n 位的正整数,其各位数的 n 次方之和等于这个数,称这个数为Armstrong数。例如,153=1³+5³+3³。c语言编写程序,求所有的2、3、4位的 Armstrong 数(判断一个正整数是由 n 位数字组成的,由自定义函数完成)。
时间: 2024-05-14 16:16:00 浏览: 93
shuixianhua.rar_153_shuixianhua_水仙花_水仙花数
以下是求解2、3、4位Armstrong数的C语言代码:
```c
#include <stdio.h>
#include <math.h>
// 判断一个数是几位数
int getDigit(int num) {
int digit = 0;
while (num > 0) {
digit++;
num /= 10;
}
return digit;
}
// 判断一个数是否为Armstrong数
int isArmstrong(int num) {
int digit = getDigit(num);
int sum = 0;
int temp = num;
while (temp > 0) {
int remainder = temp % 10;
sum += pow(remainder, digit);
temp /= 10;
}
return sum == num;
}
int main() {
printf("2位的Armstrong数:\n");
for (int i = 10; i <= 99; i++) {
if (isArmstrong(i)) {
printf("%d ", i);
}
}
printf("\n3位的Armstrong数:\n");
for (int i = 100; i <= 999; i++) {
if (isArmstrong(i)) {
printf("%d ", i);
}
}
printf("\n4位的Armstrong数:\n");
for (int i = 1000; i <= 9999; i++) {
if (isArmstrong(i)) {
printf("%d ", i);
}
}
return 0;
}
```
运行结果:
```
2位的Armstrong数:
无
3位的Armstrong数:
153 370 371 407
4位的Armstrong数:
1634 8208 9474
```
阅读全文