素数环指的是将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。
问题描述
输入一个n,如果可以生成素数环,输出yes,否则输出no。
解法一:
纯手工全排列+判断
代码实现:
#include<iostream>
using namespace std;
int a[10],n;
bool flag=true;
void swap(int arr[],int i,int k)//交换数组中的元素
{
int temp=a[i];
a[i]=a[k];
a[k]=temp;
}
bool isPrem(int n)//判断是否为素数
{
for(int i=2;i<n;i++)
if(n%i==0)
return false;
return true;
}
bool isOk(int arr[])//判断该种排列是否满足
{
for(int i=0;i<n-1;i++)
{
if(!isPrem(arr[i]+arr[i+1]))
return false;
}
if(!isPrem(arr[n-