#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
using namespace std ;
int x[20] , vis[20] , n ;
bool flag ;
void output(){
printf("%d" , 1) ;
for(int i = 2;i <= n;i++)
printf(" %d" , x[i]) ;
puts("") ;
}
bool Is_prime(int x){
for(int i = 2;i * i <= x;i++){
if(x%i == 0) return false ;
}
return true ;
}
void dfs(int t){
if(t == n + 1){
if(Is_prime(x[n] + 1)){
output() ;
return ;
}
else
return ;
}
for(int i = 2;i <= n;i++){
if(vis[i]) continue ;
if(Is_prime(x[t - 1] + i)){
x[t] = i ;
vis[i] = -1;
dfs(t + 1) ;
vis[i] = 0 ;
}
}
}
int main(){
int i , j , T = 1;
while(cin >> n){
x[1] = 1 ;
vis[1] = -1 ;
printf("Case %d:\n" , T++) ;
dfs(2) ;
puts("");
}
return 0 ;
}
/**************************************************************
Problem: 1459
User: cust123
Language: C++
Result: Accepted
Time:430 ms
Memory:1520 kb
****************************************************************/
题目1459:Prime ring problem
最新推荐文章于 2022-07-23 16:24:15 发布