求指定范围中的素数的等差数列
2016-03-16 15:40
246 查看
想了一下,没有想出更好的办法,就只能这么多层循环一下。
import java.util.ArrayList; import java.util.Scanner; public class Main { public static boolean isPrime(int a) { if (a == 1) { return false; } for (int i = 2; i <= Math.sqrt(a); i++) { if (a % i == 0) { return false; } } return true; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int left = scanner.nextInt(); int right = scanner.nextInt(); ArrayList<Integer> array = new ArrayList<Integer>(); for (int i = left; i <= right; i++) { if (isPrime(i)) { array.add(i); } } //求出所有的差值,保存在一个二维数组里面 int arrayLen = array.size(); int[][] result = new int[arrayLen][arrayLen]; for (int i = 0; i < arrayLen; i++) { for (int j = i + 1; j < arrayLen; j++) { result[i][j] = array.get(j) - array.get(i); } } ArrayList<Integer> maxIndex = new ArrayList<Integer>(); //开始遍历二维数组,得到最长的序列 int max = 1; for (int i = 0; i < arrayLen; i++) { if ((i + max)>arrayLen) { break; } for (int j = i + 1; j < arrayLen; j++) { ArrayList<Integer> tempIndex = new ArrayList<Integer>(); int difference = result[i][j]; int m = i; int n = j; int sum = 1; tempIndex.add(i); tempIndex.add(j); while (n != arrayLen-1) { boolean find = false; for (int k = n; k < arrayLen; k++) { if (result [k] == difference) { m = n; n = k; find = true; tempIndex.add(k); sum++; break; }else if (result [k] > difference) { break; } } if (!find) { break; } } if (sum > max) { maxIndex = (ArrayList<Integer>) tempIndex.clone(); max = sum; } } } for (int i = 0; i < maxIndex.size(); i++) { if (i != (maxIndex.size()-1)) { System.out.print(array.get(maxIndex.get(i))+" "); }else { System.out.print(array.get(maxIndex.get(i))); } } } }
相关文章推荐
- Java中实际上有四种强度不同的引用
- [UE4]逻辑状态机组件
- 作业二:调查一下目前流行的源程序版本管理软件和项目管理软件
- 设计模式:单例模式
- 《Linux内核设计与实现》第一二章笔记
- mac os android ndk 配置环境变量设置笔记
- Incorrect string value: '\xF0\x9F\x98\x8A. ...' for column
- 推送准则
- vim 替换
- ubuntu没有权限(不能)创建文件夹(目录)
- Python的web小游戏启动心得
- 仿IOS自定义组合Dialog【GroupDialog】(更新版)
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- JAVA多线程和并发基础面试问答
- 注定了Java客户端不利于推向市场
- 一个叫做Widget的类
- Rule in UESTC
- Hive集成HBase(二)
- 设置 Windows 远程桌面连接的时间
- ViewDragHelper详解(一)