输入正整数n, 把整数1,2,3,……,n组成一个环,使得相邻两个整数之和均为素数。输出时从1开始逆时针排列,同一个环应该只输出一个。
样例输入:
6
样例输出:
1 4 3 2 5 6
1 6 5 2 3 4
因为输入的n不超过16 因此素数的大小应该不会超过 16 + 15 = 31
设置一个素数数组,避免屡次判断超时。
设置一个vis数组,因为素数环每个数字只出现一次,因此用一个 vis数组。
这里要回溯,因此使用后要置为原来的值。
一旦发现不符合条件,立马return 也就是回溯。
#include<bits/stdc++.h>
#define LL long long
using namespace std;
bool Prime[100];
bool vis[50];
int n;
bool isPrime(int n) {
if(n == 1) return false;
for(int i = 2; i * i <= n; i++