素数环

 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 }

 

posted @ 2012-12-05 17:22  萧凡客  阅读(208)  评论(0编辑  收藏  举报