用C语言 输入1-20的整数n把1到n的n个整数摆成一个环使得该环上任意相邻的两个数之和为素数求出所有可能组

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:58:59
谢谢

首先很容易得到一个结论,就是当N为奇数的时候,这样的环是不存在的。因为肯定至少存在一对相邻的奇数,而两个奇数的和肯定是一个偶数,那就肯定不符合要求。

然后很容易得到另一个结论,就是每一个奇数相邻的两个数,必然是偶数。这样的话,那奇数和偶数就必须相隔排列。

#include <iostream>
using namespace std;
const int N=100;
int matrix[N][N],visited[N],circle[N],n;
bool isprime(int num)
{
for(int i=2;i<num;++i)
if(num%i==0) return false;
return true;
}
void DFS(int deep,int num)
{
int i;
if(deep>n)
{
if(matrix[num][1])
{
for(i=0;i<n;++i) cout<<circle[i]<<' ';
cout<<endl;
return;
}
}
for(i=deep&1;i<=n;i+=2)
{
if(matrix[num][i]&&!visited[i])
{
visited[i]=1;circle[deep-1]=i;
DFS(deep+1,i);
visited[i]=0;
}
}
}
int main()
{

用C语言写一个程序,输入一个整数n,输出1,2,3,4.……n的全排列 在c 语言中输入n 个整数,相同的输出一个,计算个数 用C语言编写输入两个整数m和n,求其最大公约数和最小公倍数 输入任意整数n后,用C语言编程实现打印n行三角字符阵列图形 输入一个整数,返回一个与该整数数字顺序相反的整数用c语言编写 C语言编程:将输入的N个整数采用冒泡排序按照从小到大的顺序排列并且输出。 用C程序输入一个整数N打印N 的扬辉三角(为输入并且小于14) C语言 编写一个程序,用户输入一个整数n后打印出由* '号组成的n行n列的正方形图形。 用C语言编写:将输入的整数按输入顺序的反方向输出 c语言 mark:printf("\n请输入一个整数(1~50):");中mark是什么意思呀?