1 #include<stdio.h> 2 int He(int n){//求n的各个位数的和 3 if(n<10) return n;//递归出口 4 else return n%10 + He(n/10);//递归调用 5 } 6 int main(){ 7 int n,sum; 8 int a[10000];//a用来放0~n的所有生成元 9 scanf("%d",&n); 10 for(int i=0;i<n;i++){//遍历,算生成元,用a放 11 a[i]=i+He(i); 12 } 13 int b[5000];//b用来放寂寞的数 14 for(int i=0;i<n;i++){//遍历0~n 15 for(int j=0;j<n;j++){//遍历数组a 16 if(i==a[j]){//0~n中存在与生成元相等的数则非寂寞的数,数组b中的相应位置赋值为1 17 b[i]=1; 18 } 19 } 20 } 21 for(int i=0;i<n;i++){//遍历b,格式输出所有不为1的元素 22 if(b[i]!=1){ 23 printf("%d\n",i); 24 } 25 } 26 }
原文:http://www.cnblogs.com/panweiwei/p/6536390.html