#include <iostream>
using namespace std;
//用回溯法实现素数环
//输入正整数n把整数1,2,3...n组成一个环,使得相邻两个整数之和均为素数,
//输出时从整数1开始逆时针排序,同一个环应恰好输出一次。
// n <= 16
const int n = 6;
int vis[n+1] = {0}; //被访问过则为1没有被访问过为0
int A[n]; //储存数的放法
int isp[n*2] = {0};
void dfs(int cur)
{
//递归边界,记得要判断第一个数和最后一个数是否满足要求
if(cur == n && isp[A[0] + A[n-1]])
{
for(int i = 0; i < n; i++)
cout << A[i];
cout << endl;
}
else for(int i = 2; i <= n; i++) //放置每一个数字
if(!vis[i] && isp[i+A[cur-1]]) //如果i没有用过,并且与之前的一个数的和为素数
{
A[cur] = i;
vis[i] = 1; //设置使用标志
dfs(cur+1); //放下一个数
vis[i] &#