#include<stdio.h>
#include<string.h>
#define max 25
bool prime[2*max],visit[max];
int n,num[max];
void bfs(int x)
{
int i;
if(x==n)
{
if(prime[num[n-1]+1])
{
for(i=0;i<n-1;i++)
printf("%d ",num[i]);
printf("%d\n",num[n-1]);
}
}
else
{
for(i=2;i<=n;i++)
{
if(visit[i] && prime[num[x-1]+i])
{
visit[i]=0;
num[x]=i;
bfs(x+1);
visit[i]=1;
}
}
}
}
int main()
{
int i,j,m=0;
memset(prime,true,sizeof(prime));
for(i=2;i<40;i++)
{
if(prime[i])
{
for(j=2*i;j<40;j+=i)
prime[j]=0;
}
}
while(scanf("%d",&n)!=EOF)
{
printf("Case %d:\n",++m);
memset(visit,true,sizeof(visit));
memset(num,0,sizeof(num));
num[0]=1;
bfs(1);
printf("\n");
}
return 0;
}
hdu1016 Prime Ring Problem 素数环 深搜 淡定的飘过
最新推荐文章于 2019-05-31 12:34:01 发布