int main()
{
int i=0;
for(i=0;i<=100000;i++)
{
int c=0;
int ret=i;
while(ret!=0)
{
c++;
ret=ret/10;
}
int sum=0;
ret=i;
while(ret!=0)
{
sum +=pow(ret%10,c);//为什么少一个153?
ret/=10;
}
if(i==sum)
{
printf("%d ",i);
}
}
return 0;
}
测试了一下,没问题啊,153输出了啊
pow()函数是double型,double型数据保存成 int 型数据截断会产生的误差。