题目: 把从1到n这n个数摆成一个环,要求相邻两个数的和是一个素数,求出所有解法。
思路:
用数组a模拟n个数组成的环。
递归地填数:
判断第 k 种可能是否合法,
如果合法则填数;判断是否到达目标(n个数已填完),是则输出,不是则递归填下一个
如果不合法则选择下一种可能;
完整代码+注释
# include<stdio.h>
# include<math.h>
int a[20]; //用数组模拟n个数组成的环
int check_1(int x, int i); //判断数是否重复
int check_2(int x); //判断一个数是否为素数
int check_3(int x, int i); //判断相邻两数之和是否为素数
void Output_Num(); //输出函数
int n, count = 0;
/*填数,填第i+1个数(i从0开始)*/
void Insert_Num(int i) {
int k;
for (k = 2