自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
这个程序根据输入的位数去查找相应位数的自幂数。
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
int resum(long number, int n);
int main()
{
long num;
int m;
cout << "输入位数(3-10):";
cin >> m;
switch(m)
{
case 3 :
cout << "输出水仙花数:" << endl;
break;
case 4 :
cout << "输出四叶玫瑰数:" << endl;
break;
case 5 :
cout << "输出五角星数:" << endl;
break;
case 6 :
cout << "输出六合数:" << endl;
break;
case 7 :
cout << "输出北斗七星数:" << endl;
break;
case 8 :
cout << "输出八仙数:" << endl;
break;
case 9 :
cout << "输出九九重阳数:" << endl;
break;
case 10 :
cout << "输出十全十美数:" << endl;
break;
default :
cout << "位数超限!" << endl;
exit(100);
}
for(num = pow(10, m-1); num < pow(10, m); num++)
{
if(resum(num, m) == num)
cout << num << endl;
}
return 0;
}
//位数分离并进行幂的求和
int resum(long number, int n)
{
long l = number, sum = 0;
int i, j;
while(l > 0)
{
i = l % 10;
for(j = 0; j < n -1; j++)
{
i *= (l%10);
}
sum += i;
l /= 10;
}
return sum;
}
注1:刚学习C++,难免有错,望指正。
注2:安卓手机上编辑编译执行的,所以10位的执行了我一个多小时😂,不知道电脑执行情况。