素数环问题:从1到n(n<=10000)这n个数摆成一个环,要求相邻的任意两个数的和是一个素数。
代码如下:
#include<cstdio>
#include<cmath>
int n;
int num[10001]; //存储数据
bool mark[10001]; //判断该数是否被标记过
bool check(int x,int y) //判断是否满足"素数环"条件
{
int k=2,i=x+y;
while(k<=sqrt(i)&&i%k!=0) k++;
if(k>sqrt(i)) return true;
return false;
}
void print() //输出函数
{
for(int i=1;i<n;i++)
printf("%d ",num[i]);
printf("%d\n",num[n]);
}
void search(int x) //搜索函数,全排列
{
for(int i=1;i<=n;i++)
if(!mark[i]&&check(num[x-1],i)) //判断该数是否被标记以及是