数字环
【问题描述】
设计一个程序,使其将由1到N(N为偶数,且N <= 20)的N个正整数分别放置在由N个节点组成的环的各个节点上,其中1必须放在第一个节点上,并使任意两个相邻的节点上的数字之和为质数。
下图是当N为6时的一个例。当N为6时的输出样例如下:
1 4 3 2 5 6
1 6 5 2 3 4
【输入形式】
程序从标准输入上读入一个偶数。
【输出形式】
在标准输出上打印所有符合要求的排列方法。
输出有若干行,每一行都是符合题意的一种排列方法,所有数字从1所在位置开始,按顺时针方向依次输出,各个数字之间以空格分隔。
各行上的排列方式不重复。
注意:输出各行遵循"小数优先"原则, 在各种排列方式中,较小的数尽量靠前输出。如果将每行上的输出看成一个数字,则所有输出构成升序数列。具体格式见输出样例。
【样例输入】
8
【样例输出】
1 2 3 8 5 6 7 4 1 2 5 8 3 4 7 6 1 4 7 6 5 8 3 2 1 6 7 4 3 8 5 2
#include <stdio.h>
#include <stdbool.h>
// 判断一个数是否为质数
bool isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}