绝对不告诉你我已经调试了两个多小时了。。。。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n,v[20],ans[20];
//bool pd(int x,int y)
//{
// int b=x+y;
// for(int j=2;j<=sqrt(b);j++)
// if(b%j==0)
// return 0;
// else return 1;
//}
bool pd(int x,int y)
{
int k=2,i=x+y;
while (k<=sqrt(i)&&i%k!=0) k++;
if (k>sqrt(i)) return 0;
else return 1;
}
void print()
{
for(int i=1;i<=n;i++)
{
cout<<ans[i]<<" ";
}
cout<<endl;
}
void su(int a)
{
for(int i=1;i<=n;i++)
{
if(pd(ans[a],i)==0&&v[i]==0)
{
ans[a]=i;
v[i]=1;
if(a==n)
{
if(pd(ans[n],ans[1])==0&&ans[1]==1)
{
print();
}
return;
// return;
}
else su(a+1);
v[i]=0;
}
}
}
int main()
{
int i=1;
while(cin>>n)
{
cout<<"Case "<<i<<":"<<endl;
su(1);
i++;
}
return 0;
}
膜拜dalao~