1
#include<stdio.h>
2
#include<string.h>
3
char a[40010];
4
int b[5000],c[5000];
5
int main()
6

{
7
int i, j, n, t, l1, l2,f;
8
memset(a, 1, sizeof(a));
9
memset(b, 0, sizeof(b));
10
for(i = 2;i <= 200;i++)
11
if(a[i])
12
{
13
t = 40000/i;
14
for(j = 2;j <= t;j++) a[i * j] = 0;
15
}
16
t = 0;
17
for(i = 2;i <= 40000;i++)
18
if(a[i])
19
{
20
b[t] = i;
21
n=i;
22
c[t]=0;
23
while(n)
24
{
25
c[t]+=n%10;
26
n/=10;
27
}
28
t++;
29
}
30
//printf("%d\n",c[0]);
31
while(scanf("%d",&n),n)
32
{
33
while(n++)
34
{
35
i=0;f=0;
36
while(b[i]*b[i]<=n)
37
{
38
if(n%b[i++]==0)
{f=1;break;}
39
}
40
if(f==0)continue;
41
i=0;t=n;l1=0;l2=0;
42
while(t)
43
{
44
l1+=t%10;
45
t/=10;
46
}
47
t=n;i=0;
48
while(b[i]*b[i]<=t)
49
{
50
while(t && t%b[i]==0)
51
{
52
l2+=c[i];
53
t/=b[i];
54
}
55
i++;
56
}
57
// printf("%d %d\n",t,n);
58
if(t>1)
59
while(t)
60
{
61
l2+=t%10;
62
t/=10;
63
}
64
//printf("%d %d %d\n",n,l1,l2);
65
if(l1==l2)break;
66
}
67
printf("%d\n",n);
68
}
69
return 0;
70
}
71
72
先把20000以内的质数都求出来
然后枚举每一个数把它变成质数的和然后把那个数字自己也拆分就可以了就是一个简单的枚举和模拟。