从1开始生成出一个序列,后一个数为前一个数与其数字和
然后用筛法求素数的方法搞一下就好。
cout真慢....27倍 1000000
#include <bits/stdc++.h>
using namespace std;
bool a[1100000];
int f(int x)
{
int ret=0;
while (x!=0)
{
ret+=x%10;
x/=10;
}
return ret;
}
void Gao()
{
memset(a,0,sizeof(a));
for (int i=1;i<=1000000;i++)
{
if (a[i]) continue;
a[i]=true;
printf("%d\n",i);
int j;
j=i+f(i);
while (j<=1000000 && !a[j])
{
a[j]=true;
j+=f(j);
}
}
}
int main()
{
// freopen("a.out","w",stdout);
Gao();
return 0;
}