#include
#include
int a[20]={0};
int b[20]={0};
int prime[45]={0};
int n;
void isprime()
{
int i,j;
for(i=2;i<45;i++)
{
prime[i]=i;
}
for(i=2;i<45;i++)
{
if(prime[i]!=0)
{
for(j=i*2;j<45;j+=i)
{
prime[j]=0;
}
}
}
}
void dfs(int index)
{
int i,j;
if(index>1&&a[1]!=1)
return;
for(i=3;i<=index;i++)
{
if(!prime[a[i-1]+a[i-2]])
{
return;
}
}
if(index==n+1)
{
if(prime[a[1]+a[n]])
{
for(i=1;i<=n;i++)
printf("%d ",a[i]);
printf("\n");
return;
}
}
for(i=1;i<=n;i++)
{
if(b[i]==0)
{
a[index]=i;
b[i]=1;
dfs(index+1);
b[i]=0;
}
}
}
int main()
{
isprime();
int cnt=1;
while(scanf("%d",&n)!=EOF)
{
printf("Case %d:\n",cnt);
if(n%2==0)
{
dfs(1);
}
cnt++;
}
return 0;
}
素数环的问题