1 #include<stdio.h>
2 #include<string.h>
3 int a[18];
4 int v[18]={0};
5 int t[33]={0};
6 int N;
7
8 void init()
9 {
10 int i,j;
11 for(i=2;i<33;i++)
12 if(!t[i])
13 for(j=2*i;j<33;j+=i)
14 t[j]=1;
15 }
16
17 void fun1(int n) //方法一
18 {
19 int i;
20 if(n==N && ! t[1+a[N-1]])
21 {
22 for(i=0;i<N;i++)
23 printf("%d ",a[i]);
24 printf("\n");
25 }
26 for(i=2;i<=N;i++)
27 {
28 if(!v[i] && !t[a[n-1]+i])
29 {
30 v[i]=1;
31 a[n]=i;
32 fun1(n+1);
33 v[i]=0;
34 }
35 }
36 }
37
38
39 void fun2(int n) //方法二
40 {
41 int i,j,ok;
42 if(n==N && !t[1+a[N-1]])
43 {
44 for(i=0;i<n-1;i++)
45 printf("%d ",a[i]);
46 printf("%d\n",a[i]);
47 }
48 else
49 for(i=2;i<=N;i++)
50 {
51 ok=1;
52 for(j=0;j<n;j++) if(a[j]==i) ok=0;
53 if(ok && !t[a[n-1]+i])
54 {
55 a[n]=i;
56 fun2(n+1);
57 }
58 }
59 }
60
61
62 int main()
63
64 {
65 init();
66 a[0]=1;
67 while(scanf("%d",&N)!=EOF)
68 {
69 memset(v,0,sizeof(v));//初始化
70 fun1(1);
71 }
72 return 0;
73 }