版权声明:欢迎转载!拒绝抄袭. https://blog.csdn.net/qq_36257146/article/details/88357826
#include <iostream>
#include <bits/stdc++.h>
#define maxn 17
using namespace std;
int a[maxn];
bool visited[maxn];
int n;
bool check(int c,int d)
{
int t = c+d;
int flag = 0;
for(int i = 2;i<=sqrt(t);i++)
{
if(t%i == 0)
{
return false;
}
}
return true;
}
void solve(int cur)
{
if(cur == n && check(a[cur-1],a[0]))
{
for(int i = 0;i<n-1;i++)
cout<<a[i]<<" ";
cout<<a[n-1]<<endl;
}
else
{
for(int i = 2;i <=n; i++)
{
if(!visited[i]&&check(a[cur-1],i))
{
a[cur] = i;
visited[i] = 1;
solve(cur+1);
visited[i] = 0;
}
}
}
}
int main()
{
int kase = 0;
while(cin>>n&&n)
{
if(kase++) cout<<endl;
printf("Case %d:\n",kase);
memset(visited,0,sizeof(visited));
a[0] = 1;
visited[1] = 1;
solve(1);
//printf("\n");
}
return 0;
}