求1000以内的自恋性数
自恋数:n为数字,组成该数字的各个数字的n次方之和相加等于它本身,则为自恋数
有bug: 用queue存储时,虽然算法相同,但是缺少370这个数字。
```c
#include<queue>
#include<bits/stdc++.h>
using namespace std;
//连续奇数和
/*int main(){
queue<int>q;
int j,a,sum;
for(int i=1;i<1000;i++){
j=i;
sum=0;
while(j){
a=j%10;
sum+=a*a*a;
j/=10;
}
if(sum==i){
q.push(i);
}
i++;
}
cout<<"1000以内的自恋性数为:"<<endl;
while(q.size()){
cout<<q.front()<<" ";
q.pop();
}
return 0;
}*/
int main(){
int n,sum,t,r;
printf("1000以内的自恋性数为:\n\n");
for(n=1;n<1000;n++){
sum=0;
t=n;
while(t){
r=t%10;
sum+=r*r*r;
t/=10;
}
if(sum==n){
printf("%d ",n);
}
}
printf("\n");
return 0;
}
后面重新编写又可以看见370???区别在哪里.
#include<queue>
#include<bits/stdc++.h>
using namespace std;
int main(){
queue<int>q;
int i=1;
while(i<1001){
int j=i;
int sum=0;
while(j){
int a;
a=j%10;
j/=10;
sum+=a*a*a;
}
if(sum==i){
q.push(i);
}
i++;
}
cout<<"1000以内的自恋性数为:"<<endl;
while(q.size()){
cout<<q.front()<<" ";
q.pop();
}
return 0;
}