素数环 hdu1016

题目 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<<" ";elsecout<<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];}elsed=2;if(prime(b)&&c[i]==0&&prime(d)){c[i]=1;//c表示i这个数有没有用过 if(x==n)prit();elsefind(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;
}