当前位置: 首页 > news >正文

1439-素数环2

题目描述

将 1∼n1∼n 这 nn 个数字首尾相连,形成一个圆环,要求圆环上任意两个相邻的数字之和都是一个素数,请编程输出符合条件的素数环。

输入

输入数据仅一行,包含一个正整数 nn(n≤20n≤20)。

输出

输出数据最多包括 1010 行,每行由 nn 个整数组成,表示前十个符合条件的素数环(不足十个时全部输出)。

所有素数环第一个元素必须是 11 ,且按照从小到大的顺序排列。

样例

输入:

6

输出:

1 4 3 2 5 6
1 6 5 2 3 4

解题要求:
1.第1个数必须是1
2.素数环:相邻两个数的和是素数
3.如果超过10个解,只要输出前10个解

解题思路:
1.先输出第1个数为1的全排列
2.加条件使得结果满足环中,任意相邻的2个数的和是素数

3.判断,如果超过10组解,只输出前10组解

特别注意:

如果n是奇数,没有解;因为如果要相邻2数的和是素数,必须一个奇数和一个偶数间隔排开。

如果n是奇数,会导致首尾两个数的和是偶数。

#include <bits/stdc++.h>
using namespace std;/*
解题要求: 
1.第1个数必须是1
2.素数环:相邻两个数的和是素数 
3.如果超过10个解,只要输出前10个解解题思路:
1.先输出第1个数为1的全排列
2.加条件使得结果满足环中,任意相邻的2个数的和是素数
3.判断,如果超过10组解,只输出前10组解 
*/ 
int a[30];//存储素数环 
bool f[30];//标记某个数是否被使用 
int n,cnt = 0;//统计素数环的数量 //判断素数 
bool prime(int n){if(n <= 1) return false;for(int i = 2;i <= sqrt(n);i++){if(n % i == 0) return false;}return true;
}//输出素数环 
void print(){for(int i = 1;i <= n;i++){cout<<a[i]<<" ";}cout<<endl;cnt++;if(cnt == 10) exit(0);
} //为a数组下标为k的位置填值 
void dfs(int k){//循环所有的可能for(int i = 1;i <= n;i++){//如果i没有被用过,且和上一个数的和是素数 if(f[i]==false&&prime(i+a[k-1])){f[i] = true;//标记用过a[k] = i; //判断是否填满n个数,且首尾的和是素数 if(k==n&&prime(a[n]+a[1])) print();//输出素数环的结果else dfs(k+1);//填下一个位置f[i] = false;//回溯:撤销对于i这个数的占用 } } 
} int main(){cin>>n;//如果n是奇数,没有解//因为如果要相邻2数的和是素数,必须一个奇数和一个偶数间隔排开//如果n是奇数,会导致首尾两个数的和是偶数 if(n % 2 == 1) return 0; a[1] = 1;f[1] = true;//1标记占用dfs(2);//从a数组的第2个位置开始填值return 0;
}


http://www.lryc.cn/news/601956.html

相关文章:

  • 《关于matplot中绘制图像中文字体乱码问题》
  • Python Pandas.cut函数解析与实战教程
  • 蜣螂优化算法的华丽转身:基于Streamlit的MSIDBO算法可视化平台
  • 《频率之光:共振之战》
  • 商品中心—1.B端建品和C端缓存
  • unity3dTextMeshPro 设置中文字体,解决中文显示为框或中文字后面带背景颜色的问题
  • RK3568 Linux驱动学习——Linux驱动开发准备工作
  • VUE2 学习笔记9 生命周期
  • 数学建模——灰色关联分析
  • 打开postman后一直空白
  • 3D碰撞检测系统 基于SAT算法+Burst优化(Unity)
  • 量子力学的基本假设
  • Java生态下的AI开发利器:LangChain4j与Spring AI深度对比与实战
  • 【时时三省】(C语言基础)指针数组和多重指针
  • xhs小红书直播自动插件使用
  • 习题综合练习
  • 动态规划 (Dynamic Programming) 算法概念-JS示例
  • CentOS 9 配置国内 YUM 源
  • web刷题
  • 每日算法刷题Day55:7.27:leetcode 复习完第K小/大+栈4道题,用时1h50min
  • OpenCv中的 KNN 算法实现手写数字的识别
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ipywidgets’问题
  • 《 集成异步任务与定时调度:线程池与任务中心设计》
  • 特殊成员函数的生成规则:Effective Modern C++条款17解析
  • ES6模块详解:核心语法与最佳实践
  • 蛋白质反向折叠模型-ProteinMPNN安装教程
  • 【通识】设计模式
  • 设计模式(七)结构型:适配器模式详解
  • KNN算法实现图片的识别
  • 《频率之光:群星之我》