彻底掌握前每天撸一遍
#include <cstdio>
#include <algorithm>
using namespace std;
int Lu[21], Hui[21];
int Yi[12] = {2,3,5,7,11,13,17,19,23,29,31,37};
int N, num = 1;
bool Zheng(int a)
{
for (int i = 0; i < 12; i++)
if (a == Yi[i])
return true;
return false;
}
void dfs(int a)
{
if (a == N && Zheng(Lu[a - 1] + Lu[0])){
for (int i = 0; i < a - 1; i++)
printf("%d ", Lu[i]);
printf("%d\n", Lu[a - 1]);
}
for (int i = 2; i <= N; i++){
if (Hui[i]){
if (Zheng(i + Lu[a - 1])){
Hui[i] = 0;
Lu[a++] = i;
dfs(a);
Hui[i] = 1;
a--;
}
}
}
}
int main()
{
int num = 1;
while (scanf("%d", &N) != EOF)
{
printf("Case %d:\n", num++);
memset(Hui, 1, sizeof(Hui));
Lu[0] = 1;
dfs(1);
printf("\n");
}
return 0;
}