#include "stdio.h"
#include "math.h"
int list[50]={2,3,0};
int judge(int x)/*判断是不是素数*/
{
int i=0;
while(list[i]*list[i]<=x)
{
if(x%list[i]==0)
return 0;
i++;
}
return 1;
}
int frist()/*初始化素数表*/
{
int i,k,j=1;
for(i=5;i<=2100&&j<50;i++)
{
for(k=0;k<=j&&list[k]<=sqrt(i);k++)
if(i%list[k]==0) break;
if(k>j||list[k]>sqrt(i))
{
j++;
list[j]=i;
}
else continue;
}
return 1;
}
int chg(int x) /*把一个数的各位数字进行相加*/
{
int sum=0;
while(x>10)
{
sum+=(x%10);
x/=10;
}
sum+=x;
return sum;
}
int zys(int x) /*求质因数的和*/
{
int i,sum=0,y=x;
for(i=2;i<=x;i++)
if(judge(i)&&x%i==0)
{
if(i==y) return 1;
sum+=chg(i);
x/=i;
i=1;
}
return sum;
}
int main()
{
int i;
frist();
for(i=4;i<=9999;i++)
if(chg(i)==zys(i))
printf("%d ",i);
return 0;
}
/*有什么问题可以 Q 我 172610236*/