昨天看算法的一些知识,发现了实现阿姆斯特朗数的算法,感觉蛮好玩,然后今天就写了一下实现方法。
首先使用的是C语言实现的,代码如下:
//方法一
//求得是固定位数的值,不容易扩展
void narcissistic_number()
{
int a[6];
int x, y, z, s;
int i, j, k, t, n = 0;
std::cout << "请输入该正整数的位数(小于6):";
std::cin >> x;
y = (int)pow(10, x - 1);
z = (int)pow(10, x);
for (j = y; j < z; j++)
{
t = j;
for (i = 0; i < x; i++)
{
a[i] = t % 10;
t = t / 10;
}
s = 0;
for (i = 0; i < x; i++)
s += (int)pow(a[i], x);
if (s == j)
{
std::cout << j << endl;
n++;
}
}
if (n == 0)
std::cout << "No output.";
}
不过这个方法,只能实现特定位数下的情况,有些局限。然后想了一下另外一种方法(还是参考了python代码的逻辑),代码如下: