用C语言编写一段求出 0~100000 之间的所有“水仙花数”并输出“水仙花数”是指一个 n 位数,其各位数字的 n 次方之和确好等于该数本身
时间: 2024-06-01 18:10:40 浏览: 84
水仙花数,也称为阿姆斯特朗数,是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(C语言源代码)
#include <stdio.h>
int main() {
int i, j, k, n, sum;
for (i = 0; i <= 9; i++) {
sum = i * i * i;
if (sum == i) {
printf("%d ", i);
}
}
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
sum = i * i * i + j * j * j;
if (sum == i * 10 + j) {
printf("%d ", i * 10 + j);
}
}
}
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
sum = i * i * i + j * j * j + k * k * k;
if (sum == i * 100 + j * 10 + k) {
printf("%d ", i * 100 + j * 10 + k);
}
}
}
}
for (n = 4; n <= 6; n++) {
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
sum = i * i * i + j * j * j + k * k * k;
if (sum == i * 100 + j * 10 + k) {
printf("%d ", i * 100 + j * 10 + k);
}
}
}
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
sum = i * i * i + j * j * j + k * k * k;
if (sum == i * 1000 + j * 100 + k * 10 + i) {
printf("%d ", i * 1000 + j * 100 + k * 10 + i);
}
}
}
}
}
return 0;
}
阅读全文