#include<stdio.h>
#include<math.h>
#include<string.h>
#define N 21
int a[N],b[N],vis[N];
int n;
int prime(int t)
{
int i,j,k;
if(t==2)
return 1;
k=t/2+1;
for(i=2;i<k;i++)
{
if(t%i==0)
return 0;
}
return 1;
}
void dfs(int s)
{
int i,j,k;
if(n+1==s)
{
if(!prime(a[s-1]+1))
return;
printf("1");
for(i=2;i<=n;i++)
printf(" %d",a[i]);
printf("\n");
}
else
{
for(i=2;i<=n;i++)
{
if(vis[i])
continue;
if(prime(a[s-1]+i))
{
a[s]=i;
vis[i]=1;
dfs(s+1);
vis[i]=0;
}
}
}
}
int main()
{
int i,j,k,m;
i=1;
while(scanf("%d",&n)==1)
{
printf("Case %d:\n",i++);
a[1]=1;
memset(vis,0,sizeof(vis));
vis[1]=1;
dfs(2);
printf("\n");
}
return 0;
}
杭电 1016
最新推荐文章于 2018-07-29 16:52:48 发布