/*将1-n个数放在环中,保证相邻的两个数的和是素数第一个数字永远是1就这两个约束条件第一个难点是计算素数; 参考文献: http://c.biancheng.net/cpp/html/2547.html http://blog.csdn.net/liukehua123/article/details/5482854第二个部分是深度递归; http://blog.csdn.net/a402630999/article/details/7208218 http://www.cnblogs.com/jiangjing/archive/2013/02/04/2891621.html*/#include#include int n;int book[21],a[21];int isPrime[42];int get_prime(){ for(int i=2;i<8;i++) { if(!isPrime[i]) { for(int j=i*i;j<42;j+=i) isPrime[j]=1; } } return 0;}int dfs(int x){ if(x==n&&!isPrime[a[0]+a[n-1]])//最后一个已经放进去,并且最后一对首尾也满足条件 { for(int i=0;i