标签:
6 8
Case 1: 1 4 3 2 5 6 1 6 5 2 3 4 Case 2: 1 2 3 8 5 6 7 4 1 2 5 8 3 4 7 6 1 4 7 6 5 8 3 2 1 6 7 4 3 8 5 2
#include<stdio.h> #include<string.h> int vis[30],a[30]; int IsPrime(int x)//素数判定 { for(int i=2;i*i<=x;++i) { if(x%i==0) return 0; } return 1; } void DFS(int n,int c) { if(c==n)//当找到完n个相邻的素数之后 { if(IsPrime(a[n]+1))//判断首位是否满足相加为素数 { printf("1"); for(int i=2;i<=n;++i) printf(" %d",a[i]); printf("\n"); } return ; } for(int i=2;i<=n;++i) { if(!vis[i]&&IsPrime(a[c]+i))//一个一个找,找到i后把i赋给a[c],c为现在找到的个数 { a[c+1]=i; vis[i]=1; DFS(n,c+1); vis[i]=0; } } } int main() { int n,num=0; while(~scanf("%d",&n)) { //printf("%d ",IsPrime(n)); memset(vis,0,sizeof(vis)); printf("Case %d:\n",++num); vis[1]=1; a[1]=1; DFS(n,1); printf("\n"); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/yuzhiwei1995/article/details/47273369