1. 程式人生 > >素數環

素數環

tab mat while printf return math div print tdi

 1 #include<stdio.h>
 2 #include<math.h>
 3 int n;
 4 int table[101];
 5 int ans[50];
 6 
 7 int x(int n)
 8 {
 9     int a=sqrt(n);
10     for(int i=2; i<=a; i++)
11         if(n%i==0)
12             return 0;
13     return 1;
14 }
15 
16 int right(int m)
17 {
18     if(!table[(ans[m]+ans[m-1
])]) 19 return 0; 20 for(int i=1; i<m; i++) 21 if(ans[i]==ans[m]) 22 return 0; 23 return 1; 24 } 25 26 void bfs(int m) 27 { 28 if(m>n) 29 { 30 if(table[ans[n]+1]) 31 for(int i=1; i<=n; i++) 32 { 33 printf("
%d",ans[i]); 34 if(i!=n)printf(" "); 35 else printf("\n"); 36 } 37 } 38 else 39 { 40 for(int i=2; i<=n; i++) 41 { 42 ans[m]=i; 43 if(right(m)) 44 bfs(m+1); 45 } 46 } 47 } 48 49
int main() 50 { 51 int t=0; 52 for(int i=1; i<=100; i++)table[i]=x(i); 53 //for(int i=1; i<=100; i++)printf("%d is %d\n",i,table[i]); 54 while(scanf("%d",&n)!=EOF) 55 { 56 printf("Case %d:\n",++t); 57 ans[1]=1; 58 bfs(2); 59 printf("\n"); 60 } 61 return 0; 62 }

素數環