一个n位正整数如果等于它的n个数字的n次方和,该数称为n位自方幂数。请设计C语言代码求3~6位自方幂数。
时间: 2024-06-03 19:08:45 浏览: 171
C语言求正整数的位数代码
#include <stdio.h>
#include <math.h>
int main() {
int n, i, j, k, l;
for (n = 3; n <= 6; n++) { // 枚举3到6位数
for (i = 1; i <= 9; i++) { // 第一位从1到9枚举
int num = i * pow(10, n-1); // 计算当前数的值
int sum = pow(i, n); // 计算当前数的自方幂数
for (j = 0; j <= 9; j++) { // 第二位从0到9枚举
int num2 = num + j * pow(10, n-2); // 计算当前数的值
int sum2 = sum + pow(j, n); // 计算当前数的自方幂数
for (k = 0; k <= 9; k++) { // 第三位从0到9枚举
int num3 = num2 + k * pow(10, n-3); // 计算当前数的值
int sum3 = sum2 + pow(k, n); // 计算当前数的自方幂数
if (n == 3) { // 如果是3位数
if (num3 == sum3) { // 满足条件输出
printf("%d\n", num3);
}
} else { // 如果是4、5、6位数
for (l = 0; l <= 9; l++) { // 第四位(或第五位、第六位)从0到9枚举
int num4 = num3 + l * pow(10, n-4); // 计算当前数的值
int sum4 = sum3 + pow(l, n); // 计算当前数的自方幂数
if (n == 4) { // 如果是4位数
if (num4 == sum4) { // 满足条件输出
printf("%d\n", num4);
}
} else { // 如果是5、6位数
for (int m = 0; m <= 9; m++) { // 第五位(或第六位)从0到9枚举
int num5 = num4 + m * pow(10, n-5); // 计算当前数的值
int sum5 = sum4 + pow(m, n); // 计算当前数的自方幂数
if (n == 5) { // 如果是5位数
if (num5 == sum5) { // 满足条件输出
printf("%d\n", num5);
}
} else { // 如果是6位数
for (int o = 0; o <= 9; o++) { // 第六位从0到9枚举
int num6 = num5 + o * pow(10, n-6); // 计算当前数的值
int sum6 = sum5 + pow(o, n); // 计算当前数的自方幂数
if (num6 == sum6) { // 满足条件输出
printf("%d\n", num6);
}
}
}
}
}
}
}
}
}
}
}
return 0;
}
阅读全文