#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_NUMBER 10000000
int my_pow(int n, int m) //用math.h里的pow比较慢,所以自己写了
{
int sum=1;
while(m--) sum*=n;
return sum;
}
int isSXH(int n)
{
char str[20];
int size,sum=0;
itoa(n, str, 10);
size = strlen(str);
for(int i=0;i<size;i++) sum+=my_pow((str[i]-'0'),size);
if(sum == n) return 1;
return 0;
}
int main()
{
for(int n=1;n<MAX_NUMBER;n++)
{
if(isSXH(n)) printf("%d\n",n);
}
return 0;
}
简单写了一个。
1. 位数小于8位还可以,到8位就得等一会儿了,到9位我估计是不能忍受了。
2. 如果要再大的位数,还有int的越界问题,这里不考虑了。