题目 hdu 1016 素数环
#include<iostream>
#include<cstring>
using namespace std;
int n,a[25],b,c[25],d,flag,t;
int prime(int x)//判断是不是素数
{
for(int j=2;j<x;j++)
{
if(x%j==0) return 0;
}
return 1;
}
void prit()//输出
{
flag=1;
for(int i=1;i<=n;i++)
{
cout<<a[i];
if(i!=n)
cout<<" ";
else
cout<<endl;
}
}
void find(int x)
{
for(int i=2;i<=n;i++)
{
a[x]=i;//记录第x个数是i
b=a[x]+a[x-1];//俩数之和 用来判断是不是素数
if(x==n)//最后一个和第一个要独立出来判断
{
d=a[x]+a[1];
}
else
d=2;
if(prime(b)&&c[i]==0&&prime(d))
{
c[i]=1;//c表示i这个数有没有用过
if(x==n)
prit();
else
find(x+1);
c[i]=0;
}
}
}
int main()
{
while(cin>>n)
{
t++;
memset(c,0,sizeof(c));
flag=0;
if(n==0)
break;
cout<<"Case "<<t<<":"<<endl;
a[1]=1;
c[1]=1;
find(2);
// if(flag==0)
// cout<<"No Answer"<<endl;
cout<<endl;
}
return 0;
}