都很水…
#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
#include<cstring>
using namespace std;
int prime[38] = { 0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 };
int quan[20] = { 0 };
int fang[20] = { 0 };
int n;
void dfs(int step)
{
if (step == n + 1&&prime[fang[1]+fang[n]]==1)
{
for (int a = 1;a <= n;a++)
printf("%d ", fang[a]);
printf("%d\n", fang[n]);
return;
}
else
{
for (int i = 2;i <= n;i++)
{
if (quan[i] == 0 && prime[fang[step - 1] + i]==1)
{
quan[i] = 1;
fang[step] = i;
dfs(step + 1);
quan[i] = 0;
}
}
}
return;
}
int main()
{
prime[0] = 0;
prime[1] = 0;
fang[0] = 1;
fang[1] = 1;
for (int a = 2;a*a <= 37;a++)
{
if (prime[a] == 0)continue;
for (int b = 2*a;b <= 37;b = b + a)
{
prime[b] = 0;
}
}
int w = 0;
while (cin >> n)
{
w++;
cout << "Case" << " " << w << ":" << endl;
dfs(2);
}
return 0;
}