编程解决素数环问题Java_回溯法解决素数环问题java实现
素数环问题:
输入正整数n,把整数1,2,3……,n组成一个环,使得相邻两个整数之和均为素数,输出所有方案,注意同一个环应恰好输出一次.n<==16
样例输入:
6
样例输出:
1 4 3 2 5 6
1 6 5 2 3 4
回溯法解决素数环问题是比较简单的,我设计了一个递归函数,函数的功能是: 在不停的尝试结果数列中的下一个,假如尝试到最后一个还可以放置数字的话,就得到一种解决方案并输出,直到求出所有的解决方案,因为题目要求输出时候从整数1开始,所以我直接设置第一个为1,从第二个开始尝试。
代码如下 :
import java.util.*;
public class HuiSuPrimeLoop {
static int[] visit = null;
static int[] result = null;
static int n =0;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
visit = new int[n+1];
result = new int[n];
handle(0);
}
private static boolean isPrime(int num){
if (num == 2 || num == 3) {
return true;
}
if (num%6 !=1 && num%6 != 5) {
return false;
}
for (int i = 5; i*i <= num; i=i+6) {
if (num%i==0 || num%(i+2)==0) {
return false;
}
}
return true;
}
public static void handle(int i){
for(int j=1;j<=n;j++){
if(i!=0){ // 因为要形成一个闭环,所以1和其他元素不同,因为1一开始的时候没有前一项
if(i==n-1){ //最后一项要注意需要和第一项相加之后的数字是质数
if(visit[j]==0&&isPrime(j+result[0])&&isPrime(result[i-1]+j)){
result[i] = j;
visit[j] = -1;
for(int k=0;k
结果如下 :
编程解决素数环问题Java_回溯法解决素数环问题java实现相关推荐
- c语言 用回溯算法解决01背包问题,回溯法解决01背包问题
<回溯法解决01背包问题>由会员分享,可在线阅读,更多相关<回溯法解决01背包问题(21页珍藏版)>请在人人文库网上搜索. 1.回溯法解决01背包问题,回溯法解决01背包问题, ...
- 回溯算法背包问题迭代c语言,回溯法解决0_1背包问题(迭代和递归)
问题:0/1背包问题 例子:weight数组代表物品重量,value数组代表物品价值,M代表背包容量.背包是按单位价值递减的顺序排列的,即value[i]/weight[i]>value[i-1 ...
- 利用回溯法解决1-9之间添加+或-或使得运算结果为100的问题
问题描述 编写一个在1,2,-,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 1 ...
- 回溯法解决0-1背包问题
回溯法解决0-1背包问题 参考文章: (1)回溯法解决0-1背包问题 (2)https://www.cnblogs.com/womendouyiyang/p/10957527.html (3)http ...
- 回溯法解决部落冲突问题
回溯法解决部落冲突问题 实验内容 问题描述 思路分析 方法步骤 实验代码 实验内容 原始部落byteland中的居民为了争抢有限的资源,经常发生冲突.几乎每个居民都有它的仇敌.部落酋长为了组织一支保卫 ...
- 回溯法解决n皇后问题
回溯法解决n皇后问题 题目要求: 在n×n格的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于在n×n格的棋盘上放置n个皇后, ...
- 回溯法解决力扣79题单词搜索
回溯法解决力扣79题单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母 ...
- 回溯法解决工作分配问题
回溯法解决工作分配问题 问题描述: 设有n件工作分配给n个人.为第i个人分配工作j所需的费用为c[i][j] .试设计一个算法,计算最佳工作分配方案,为每一个人都分配1 件不同的工作,并使总费用达到最 ...
- 回溯法解决全排列问题总结
1.了解全排列和回溯 所谓全排列就是从n个元素中取出n个元素按照一定的顺序进行排列,所有的排列情况叫做全排列. 这n个元素又分为两种情况,一种是n个元素存在重复元素,一种是n个元素不存在重复元素.不存 ...
最新文章
- 力扣(LeetCode)刷题,简单题(第14期)
- 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)
- OpenMP 编程实例(蒙特卡罗算法)
- 有关matlab拟合工具箱的使用
- 运行caffe识别数字的模型mnist
- 【Python CheckiO 题解】Flatten a List
- 诺基亚手机的安全保护。--如何使你的手机丢失,被盗后依然安全。
- scrapy使用pipeline保存不同的表单Item到数据库、本地文件
- 简单调用exe的方法
- qt如何编写android程序,如何利用Qt开发Android应用程序
- mi5splus android9,小米5SPlus 安卓9.0 原生体验 LineageOS16.0 ROOT
- 玩真的了!深度解读拒不履行信息网络安全管理义务将入罪
- 和cool一起学前端----第八天
- 数据恢复技术与LVM数据恢复方法
- 笔记本外接显示器 显示不清晰
- 联想计算机如何会会出厂设置方法,联想笔记本开机方法 联想笔记本电脑恢复出厂设置方法...
- 苹果机和Android,苹果机和安卓机各有优缺点,但苹果机这四点让人顶不住
- fhq treap入门
- __dirname和__filename
- 设计模式之门面设计模式
热门文章
- 【bug】掘金md文本解析器bug
- 云存储是否能拯救数据泛滥
- ajax传回的数据做表格,Datatables ajax返回的数据顺序与表格中的数据顺序不一致...
- 学会asp后再学php,九天学会ASP 之 第二天
- 数字IC后端设计实现流程之floorplan及powerplan规划
- qtp xml联合xsl输出html报表,通过xml和xsl实现数据和页面展示模板的解耦(简单完整网站代码示例)...
- mysql周德伟课后答案_mysql数据库搜索
- 参观云栖小镇体会_云栖小镇感受
- 邮件策略在域树中的实战应用:Exchange2003系列之十
- 原始套接字AF_PACKET用法尝试