素数环是一个计算机程序问题,指的是将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。
现在要求输入一个n,求n个数围成一圈有多少种素数环,规定第一个数字是1。
#include
#include
using namespace std; int n=0; int a[100]; //对应环 int visit[100]; //标记数组 0表示未用 1表示已用 int check(int k) //判断数字x是否为整数 { int i,n; n=(int)sqrt(k); for(i=2;i<=n;i++) if(k%i==0) return 0; return 1; } void dfs(int step) { if(step==n&&check(a[0]+a[n-1])==1) //全部填满而且第一个元素和最后一个元素满足就输出 { for(int i=0;i
>n; a[0]=1; //因为是环所以第一个元素固定 visit[1]=1; //1已用 dfs(1); //从第一个元素开始 return 0; }
此类回溯问题与八皇后 哈密顿回路问题等都大同小异
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203802.html原文链接:https://javaforall.net
