从1开始,以每一个标记为0的数为起点,产生序列,序列中的任何数的标记都置为1,最后找出标记为0的,即为所求数。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 1000001
int a[MAX];
int getSum(int n){
int sum=n;
while(n>0){
sum+=(n%10);
n/=10;
}
return sum;
}
void Init(){
int i,b;
for(i=1;i<MAX;i++) a[i]=0;
for(i=1;i<MAX;i++){
if(a[i]==0){
b=getSum(i);
while(b<MAX&&a[b]==0){
a[b]=1;
b=getSum(b);
}
}
}
}
int main(){
int i;
Init();
for(i=1;i<MAX;i++){
if(a[i]==0)printf("%d\n",i);
}
system("pause");
return 0;
}