#include<bits/stdc++.h>
using namespace std;
int n, num=0;
int a[17];
bool b[17];
bool Prime_number(int t) //判断素数
{
for(int i=2;i<=sqrt(t);i++)
if(t%i==0) return 0;
return 1;
}
void check()
{
bool t=1; //判断素数环
for(int i=1;i<n;i++)
if(!Prime_number(a[i]+a[i+1])) t=0;
if(!Prime_number(a[1]+a[n])) t=0;
if(t) {
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
}
void dfs(int x) //x是当前枚举的a的下标
{
if(x>n) {
if(Prime_number(a[1]+a[n])) {
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
}
for(int i=2;i<=n;i++) {
if(!b[i])
if(Prime_number(i+a[x-1])) {
b[i]=1;
a[x]=i;
dfs(x+1);
b[i]=0; //回溯
}
}
}
int main()
{
while(cin>>n)
{
num++;
cout<<"Case "<<num<<":"<<endl;
for(int i=1;i<=n;i++) b[i]=0;
a[1]=1;
b[1]=1;
dfs(2);
cout<<endl;
}
}
P1305 素数环
最新推荐文章于 2024-08-09 20:36:57 发布