#include <stdio.h>
#define N 17
int a[N];
int mark[N];
int n;
bool isPrime(int t) {
for(int i = 2; i < t; i ++) {
if(t % i == 0) return false;
}
return true;
}
void prime(int pre, int sum) {
if(sum == n) {
if(isPrime(a[n - 1] + 1))
{
for(int i = 0; i < n; i ++) {
printf("%d ", a[i]);
}
printf("\n");
}
return ;
}
for(int i = 2; i <= n; i ++) {
if(isPrime(i + pre) && mark[i] == 0) {
a[sum] = i;
mark[i] = 1;
prime(i, sum + 1);
mark[i] = 0;
}
}
}
int main()
{
int cs = 0;
while(scanf("%d", &n) != EOF) {
cs ++;
for(int i = 0; i <= n; i ++) mark[i] = 0;
a[0] = 1;
mark[1] = 1;
printf("Case %d:\n", cs);
prime(1, 1);
}
return 0;
}
916

被折叠的 条评论
为什么被折叠?



