问题:
有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。
规定每个素数环都从1开始。
例如,下图就是4的一个素数环。
#include<iostream>
#include <math.h>
using namespace std;
int* a = new int[20];
int prime(int x) { //判断整数x是否为素数
int i, n;
n = (int)sqrt(x);
for (i = 2; i <= n; i++)
if (x % i == 0) return 0;
return 1;
}
int check(int k, int n) {
int flag = 0;
for (int i = 0; i < k; i++) { //判断是否重复
if (a[i] == a[k])return 0;
}
flag = prime(a[k] + a[k - 1]); //判断相邻数之和是素数
if (flag == 1 && k == n - 1) { //判断第一个和最后一个是否为素数
flag = prime(a[k] + a[0]);
}
return flag;
}
void primecirlce(int n) {