素数环问题:

输入正整数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实现相关推荐

  1. c语言 用回溯算法解决01背包问题,回溯法解决01背包问题

    <回溯法解决01背包问题>由会员分享,可在线阅读,更多相关<回溯法解决01背包问题(21页珍藏版)>请在人人文库网上搜索. 1.回溯法解决01背包问题,回溯法解决01背包问题, ...

  2. 回溯算法背包问题迭代c语言,回溯法解决0_1背包问题(迭代和递归)

    问题:0/1背包问题 例子:weight数组代表物品重量,value数组代表物品价值,M代表背包容量.背包是按单位价值递减的顺序排列的,即value[i]/weight[i]>value[i-1 ...

  3. 利用回溯法解决1-9之间添加+或-或使得运算结果为100的问题

    问题描述 编写一个在1,2,-,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序,并输出所有的可能性.例如:1 + 2 + 34 – 5 + 67 – 8 + 9 = 1 ...

  4. 回溯法解决0-1背包问题

    回溯法解决0-1背包问题 参考文章: (1)回溯法解决0-1背包问题 (2)https://www.cnblogs.com/womendouyiyang/p/10957527.html (3)http ...

  5. 回溯法解决部落冲突问题

    回溯法解决部落冲突问题 实验内容 问题描述 思路分析 方法步骤 实验代码 实验内容 原始部落byteland中的居民为了争抢有限的资源,经常发生冲突.几乎每个居民都有它的仇敌.部落酋长为了组织一支保卫 ...

  6. 回溯法解决n皇后问题

    回溯法解决n皇后问题 题目要求: 在n×n格的棋盘上放置彼此不受攻击的n个皇后.按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子.n后问题等价于在n×n格的棋盘上放置n个皇后, ...

  7. 回溯法解决力扣79题单词搜索

    回溯法解决力扣79题单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母 ...

  8. 回溯法解决工作分配问题

    回溯法解决工作分配问题 问题描述: 设有n件工作分配给n个人.为第i个人分配工作j所需的费用为c[i][j] .试设计一个算法,计算最佳工作分配方案,为每一个人都分配1 件不同的工作,并使总费用达到最 ...

  9. 回溯法解决全排列问题总结

    1.了解全排列和回溯 所谓全排列就是从n个元素中取出n个元素按照一定的顺序进行排列,所有的排列情况叫做全排列. 这n个元素又分为两种情况,一种是n个元素存在重复元素,一种是n个元素不存在重复元素.不存 ...

最新文章

  1. 力扣(LeetCode)刷题,简单题(第14期)
  2. 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)
  3. OpenMP 编程实例(蒙特卡罗算法)
  4. 有关matlab拟合工具箱的使用
  5. 运行caffe识别数字的模型mnist
  6. 【Python CheckiO 题解】Flatten a List
  7. 诺基亚手机的安全保护。--如何使你的手机丢失,被盗后依然安全。
  8. scrapy使用pipeline保存不同的表单Item到数据库、本地文件
  9. 简单调用exe的方法
  10. qt如何编写android程序,如何利用Qt开发Android应用程序
  11. mi5splus android9,小米5SPlus 安卓9.0 原生体验 LineageOS16.0 ROOT
  12. 玩真的了!深度解读拒不履行信息网络安全管理义务将入罪
  13. 和cool一起学前端----第八天
  14. 数据恢复技术与LVM数据恢复方法
  15. 笔记本外接显示器 显示不清晰
  16. 联想计算机如何会会出厂设置方法,联想笔记本开机方法 联想笔记本电脑恢复出厂设置方法...
  17. 苹果机和Android,苹果机和安卓机各有优缺点,但苹果机这四点让人顶不住
  18. fhq treap入门
  19. __dirname和__filename
  20. 设计模式之门面设计模式

热门文章

  1. 【bug】掘金md文本解析器bug
  2. 云存储是否能拯救数据泛滥
  3. ajax传回的数据做表格,Datatables ajax返回的数据顺序与表格中的数据顺序不一致...
  4. 学会asp后再学php,九天学会ASP 之 第二天
  5. 数字IC后端设计实现流程之floorplan及powerplan规划
  6. qtp xml联合xsl输出html报表,通过xml和xsl实现数据和页面展示模板的解耦(简单完整网站代码示例)...
  7. mysql周德伟课后答案_mysql数据库搜索
  8. 参观云栖小镇体会_云栖小镇感受
  9. 邮件策略在域树中的实战应用:Exchange2003系列之十
  10. 原始套接字AF_PACKET用法尝试