程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java完成的持續奇數(n+2*x)是合數的算法題暴力算法

Java完成的持續奇數(n+2*x)是合數的算法題暴力算法

編輯:關於JAVA

Java完成的持續奇數(n+2*x)是合數的算法題暴力算法。本站提示廣大學習愛好者:(Java完成的持續奇數(n+2*x)是合數的算法題暴力算法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java完成的持續奇數(n+2*x)是合數的算法題暴力算法正文


持續6個奇數a,a+2,a+4,a+6,a+8,a+10都是合數,求最小的a的暴力解法。

先上成果,前面貼上代碼:

1次持續n=9,持續值個數: 1;耗時: 0ms,總計: 0ms
2次持續n=25,持續值個數: 1;耗時: 0ms,總計: 0ms
3次持續n=91,持續值個數: 1;耗時: 0ms,總計: 0ms
4次持續n=115,持續值個數: 3;耗時: 0ms,總計: 1ms
5次持續n=115,持續值個數: 3;耗時: 0ms,總計: 1ms
6次持續n=115,持續值個數: 3;耗時: 0ms,總計: 1ms
7次持續n=525,持續值個數: 2;耗時: 0ms,總計: 1ms
8次持續n=525,持續值個數: 2;耗時: 0ms,總計: 1ms
9次持續n=889,持續值個數: 1;耗時: 0ms,總計: 1ms
10次持續n=1131,持續值個數: 1;耗時: 0ms,總計: 1ms
11次持續n=1329,持續值個數: 6;耗時: 0ms,總計: 1ms
12次持續n=1329,持續值個數: 6;耗時: 0ms,總計: 1ms
13次持續n=1329,持續值個數: 6;耗時: 0ms,總計: 1ms
14次持續n=1329,持續值個數: 6;耗時: 0ms,總計: 1ms
15次持續n=1329,持續值個數: 6;耗時: 0ms,總計: 1ms
16次持續n=1329,持續值個數: 6;耗時: 0ms,總計: 1ms
17次持續n=9553,持續值個數: 1;耗時: 2ms,總計: 3ms
18次持續n=15685,持續值個數: 4;耗時: 1ms,總計: 5ms
19次持續n=15685,持續值個數: 4;耗時: 1ms,總計: 5ms
20次持續n=15685,持續值個數: 4;耗時: 1ms,總計: 5ms
21次持續n=15685,持續值個數: 4;耗時: 1ms,總計: 5ms
22次持續n=19611,持續值個數: 4;耗時: 2ms,總計: 8ms
23次持續n=19611,持續值個數: 4;耗時: 2ms,總計: 8ms
24次持續n=19611,持續值個數: 4;耗時: 2ms,總計: 8ms
25次持續n=19611,持續值個數: 4;耗時: 2ms,總計: 8ms
26次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
27次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
28次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
29次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
30次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
31次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
32次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
33次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
34次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
35次持續n=31399,持續值個數: 10;耗時: 5ms,總計: 13ms
36次持續n=155923,持續值個數: 7;耗時: 92ms,總計: 105ms
37次持續n=155923,持續值個數: 7;耗時: 92ms,總計: 105ms
38次持續n=155923,持續值個數: 7;耗時: 92ms,總計: 105ms
39次持續n=155923,持續值個數: 7;耗時: 92ms,總計: 105ms
40次持續n=155923,持續值個數: 7;耗時: 92ms,總計: 105ms
41次持續n=155923,持續值個數: 7;耗時: 92ms,總計: 105ms
42次持續n=155923,持續值個數: 7;耗時: 93ms,總計: 106ms
43次持續n=360655,持續值個數: 5;耗時: 243ms,總計: 349ms
44次持續n=360655,持續值個數: 5;耗時: 243ms,總計: 349ms
45次持續n=360655,持續值個數: 5;耗時: 243ms,總計: 349ms
46次持續n=360655,持續值個數: 5;耗時: 243ms,總計: 349ms
47次持續n=360655,持續值個數: 5;耗時: 243ms,總計: 349ms
48次持續n=370263,持續值個數: 8;耗時: 14ms,總計: 363ms
49次持續n=370263,持續值個數: 8;耗時: 14ms,總計: 363ms
50次持續n=370263,持續值個數: 8;耗時: 14ms,總計: 363ms
51次持續n=370263,持續值個數: 8;耗時: 14ms,總計: 363ms
52次持續n=370263,持續值個數: 8;耗時: 14ms,總計: 363ms
53次持續n=370263,持續值個數: 8;耗時: 14ms,總計: 363ms
54次持續n=370263,持續值個數: 8;耗時: 14ms,總計: 363ms
55次持續n=370263,持續值個數: 8;耗時: 14ms,總計: 363ms
56次持續n=492115,持續值個數: 1;耗時: 185ms,總計: 548ms
57次持續n=1349535,持續值個數: 2;耗時: 1854ms,總計: 2402ms
58次持續n=1349535,持續值個數: 2;耗時: 1854ms,總計: 2402ms
59次持續n=1357203,持續值個數: 7;耗時: 22ms,總計: 2424ms
60次持續n=1357203,持續值個數: 7;耗時: 22ms,總計: 2424ms
61次持續n=1357203,持續值個數: 7;耗時: 22ms,總計: 2424ms
62次持續n=1357203,持續值個數: 7;耗時: 22ms,總計: 2424ms
63次持續n=1357203,持續值個數: 7;耗時: 22ms,總計: 2424ms
64次持續n=1357203,持續值個數: 7;耗時: 22ms,總計: 2424ms
65次持續n=1357203,持續值個數: 7;耗時: 22ms,總計: 2424ms
66次持續n=2010735,持續值個數: 8;耗時: 1889ms,總計: 4313ms
67次持續n=2010735,持續值個數: 8;耗時: 1889ms,總計: 4313ms
68次持續n=2010735,持續值個數: 8;耗時: 1889ms,總計: 4313ms
69次持續n=2010735,持續值個數: 8;耗時: 1889ms,總計: 4313ms
70次持續n=2010735,持續值個數: 8;耗時: 1889ms,總計: 4313ms
71次持續n=2010735,持續值個數: 8;耗時: 1889ms,總計: 4313ms
72次持續n=2010735,持續值個數: 8;耗時: 1889ms,總計: 4313ms
73次持續n=2010735,持續值個數: 8;耗時: 1890ms,總計: 4314ms
74次持續n=4652355,持續值個數: 3;耗時: 10583ms,總計: 14897ms
75次持續n=4652355,持續值個數: 3;耗時: 10583ms,總計: 14897ms
76次持續n=4652355,持續值個數: 3;耗時: 10583ms,總計: 14897ms
77次持續n=17051709,持續值個數: 13;耗時: 86082ms,總計: 100979ms
78次持續n=17051709,持續值個數: 13;耗時: 86082ms,總計: 100979ms
79次持續n=17051709,持續值個數: 13;耗時: 86082ms,總計: 100979ms
80次持續n=17051709,持續值個數: 13;耗時: 86082ms,總計: 100979ms
81次持續n=17051709,持續值個數: 13;耗時: 86082ms,總計: 100979ms
82次持續n=17051709,持續值個數: 13;耗時: 86082ms,總計: 100979ms
83次持續n=17051709,持續值個數: 13;耗時: 86082ms,總計: 100979ms
84次持續n=17051709,持續值個數: 13;耗時: 86082ms,總計: 100979ms
85次持續n=17051709,持續值個數: 13;耗時: 86083ms,總計: 100980ms
86次持續n=17051709,持續值個數: 13;耗時: 86083ms,總計: 100980ms
87次持續n=17051709,持續值個數: 13;耗時: 86083ms,總計: 100980ms
88次持續n=17051709,持續值個數: 13;耗時: 86083ms,總計: 100980ms
89次持續n=17051709,持續值個數: 13;耗時: 86083ms,總計: 100980ms
90次持續n=20831325,持續值個數: 15;耗時: 34772ms,總計: 135752ms
91次持續n=20831325,持續值個數: 15;耗時: 34772ms,總計: 135752ms
92次持續n=20831325,持續值個數: 15;耗時: 34772ms,總計: 135752ms
93次持續n=20831325,持續值個數: 15;耗時: 34772ms,總計: 135752ms
94次持續n=20831325,持續值個數: 15;耗時: 34772ms,總計: 135752ms
95次持續n=20831325,持續值個數: 15;耗時: 34772ms,總計: 135752ms
96次持續n=20831325,持續值個數: 15;耗時: 34772ms,總計: 135752ms
97次持續n=20831325,持續值個數: 15;耗時: 34772ms,總計: 135752ms
98次持續n=20831325,持續值個數: 15;耗時: 34772ms,總計: 135752ms
99次持續n=20831325,持續值個數: 15;耗時: 34773ms,總計: 135753ms
100次持續n=20831325,持續值個數: 15;耗時: 34773ms,總計: 135753ms
101次持續n=20831325,持續值個數: 15;耗時: 34773ms,總計: 135753ms
102次持續n=20831325,持續值個數: 15;耗時: 34773ms,總計: 135753ms
103次持續n=20831325,持續值個數: 15;耗時: 34773ms,總計: 135753ms
104次持續n=20831325,持續值個數: 15;耗時: 34773ms,總計: 135753ms
105次持續n=47326695,持續值個數: 5;耗時: 319130ms,總計: 452155ms
106次持續n=47326695,持續值個數: 5;耗時: 319131ms,總計: 452156ms
107次持續n=47326695,持續值個數: 5;耗時: 319131ms,總計: 452156ms
108次持續n=47326695,持續值個數: 5;耗時: 319131ms,總計: 452156ms
109次持續n=47326695,持續值個數: 5;耗時: 319131ms,總計: 452156ms
110次持續n=122164749,持續值個數: 1;耗時: 1395200ms,總計: 1847356ms
111次持續n=189695661,持續值個數: 6;耗時: 1705936ms,總計: 3553292ms
112次持續n=189695661,持續值個數: 6;耗時: 1705936ms,總計: 3553292ms
113次持續n=189695661,持續值個數: 6;耗時: 1705936ms,總計: 3553292ms
114次持續n=189695661,持續值個數: 6;耗時: 1705936ms,總計: 3553292ms
115次持續n=189695661,持續值個數: 6;耗時: 1705936ms,總計: 3553292ms
116次持續n=189695661,持續值個數: 6;耗時: 1705936ms,總計: 3553292ms
117次持續n=191912785,持續值個數: 7;耗時: 61964ms,總計: 3615256ms
118次持續n=191912785,持續值個數: 7;耗時: 61964ms,總計: 3615256ms
119次持續n=191912785,持續值個數: 7;耗時: 61964ms,總計: 3615256ms
120次持續n=191912785,持續值個數: 7;耗時: 61964ms,總計: 3615256ms
121次持續n=191912785,持續值個數: 7;耗時: 61964ms,總計: 3615256ms
122次持續n=191912785,持續值個數: 7;耗時: 61964ms,總計: 3615256ms
123次持續n=191912785,持續值個數: 7;耗時: 61964ms,總計: 3615256ms
124次持續n=387096135,持續值個數: 1;耗時: 6650201ms,總計: 10265457ms
----- 
本次曾經跑完了,下一個值超越了1000次;無用耗時: 0ms,總計: xxxxxx135395ms

。。。。。。 前面的成果還沒算出來

代碼以下所示:

package com.test.test.zhihe;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 持續6個奇數a,a+2,a+4,a+6,a+8,a+10都是合數,求最小的a
 */
public class ZhishuTest {
 /**
 * 斷定某個數能否是合數. 相較於質數
 * @param num
 * @return
 */
 public static boolean He(int num){
 // 平方根
 int sq = ((Double)Math.sqrt(num)).intValue();
 // 2 ...... sq
 for (int i = 2; i <= sq; i++) {
  int mo = num % i;
  if(0 == mo){
  return true;
  }
 }
 //
 return false;
 }

 /**
 * 主函數
 * @param args
 */
 public static void main(String[] args) {
 test();
 }
 public static void test() {
 // 開端時光
 long startMillis = System.currentTimeMillis();
 // 前次完成時光
 long preMillis = System.currentTimeMillis();
 // 本次完成時光
 long curMillis = System.currentTimeMillis();
 //
 int lianxu = 1000;
 int start = 1;
 int times = 1;
 for (int x = 1; x <= lianxu; x++) {
  if(times > x){
  continue;// 跳過,進入下一次輪回
  } else {
  times = x;
  }
  List<Map<Integer, Integer>> resList = testTimesHe(x, start, false);
  //
  // 假如稀有字,則停止處置
  if(null == resList || resList.isEmpty()){
  // 找不到,就不會再有下一個了...
  // 深層嵌套太惡心了。。。
  break;
  }
  int size = resList.size();
  // 遍歷
  Iterator<Map<Integer, Integer>> iteratorR = resList.iterator();
  while (iteratorR.hasNext()) {
  Map<Integer, Integer> map = (Map<Integer, Integer>) iteratorR.next();
  //
  if(null != map && !map.isEmpty()){
   // Map遍歷太惡心了.爛Java
   Set<Integer> keys= map.keySet();
   Iterator<Integer> iteratorK = keys.iterator();
   if(iteratorK.hasNext()){
   Integer key = iteratorK.next(); // 次數
   Integer value = map.get(key); // 最小n
   //
   // 本次完成時光
   curMillis = System.currentTimeMillis();
   //
   long allTimeout = curMillis - startMillis;
   long curTimeout = curMillis - preMillis;
   System.out.println(""+key+"次持續n="+value +",持續值個數: "+size +
    ";耗時: " + curTimeout + "ms,總計: "+allTimeout+"ms");
   // 處置數據,貪心處置過的就不處置了
   if(key > 0 && value > 0){
    times = key+1;
    start = value;
   }
   }
  }
  }
  // 計入前次完成時光
  preMillis = System.currentTimeMillis();
 }
 //
 // 本次完成時光
 curMillis = System.currentTimeMillis();
 //
 long allTimeout = curMillis - startMillis;
 long curTimeout = curMillis - preMillis;
 System.out.println("本次曾經跑完了,下一個值超越了100次 " +
  ";無用耗時: " + curTimeout + "ms,總計: "+allTimeout+"ms");
 }
 
 
 /**
 * 
 * 測試 times 次的+2都是合數的最小n
 * @param times 盤算次數
 * @param start 肇端數字
 * @param onlyStart 只盤算單個start值.用於遞歸.內部挪用應當傳入
 * @return
 */
 public static List<Map<Integer, Integer>> testTimesHe(int times,int start, boolean onlyStart) {
 //
 List<Map<Integer, Integer>> resList= new ArrayList<Map<Integer, Integer>>();
 //
 // 進攻式編程
 if(start < 1){
  return resList;
 }
 if(0 == start % 2){ // 不處置偶數
  return resList;
 }
 if(times < 1){
  times = 1;
 }
 //
 int result = -1;
 //
 for (int i = start; i < Integer.MAX_VALUE; i+=2) {
  //
  // 防止一向盤算不前往
  if(onlyStart && i > start){ // start 不知足,就直接
  return resList;
  }
  for (int j = 0; j < times; j++) {
  int n = i + 2*j;
  //
  if(!He(n)){
   break;// 內層加入
  }
  //
  if(j+1 == times){
   // 跑到成果了. times 次都知足
   result = i;
   break;// 這裡退不退無所謂,跑到for的最初了
  }
  }
  //
  if(result > 0){
  //
  //System.out.println("result = "+result);
  //
  Map<Integer, Integer> resMap = new HashMap<Integer, Integer>();
  resMap.put(times, result);
  resList.add(resMap);
  // 測驗考試下一個次數,遞歸; 其實這個遞清償可以持續優化一點; 貪心算法,直接加下一次。。。
  // startTimes, 直接加這個參數。。。貪心遞歸?
  // 多1次,從result這個數開端
  int t = times +1;
  int s = result;
  List<Map<Integer, Integer>> nextList = testTimesHe(t, s, true);
  // 假如有下一層的數字,則參加到以後成果
  if(null != nextList && false==nextList.isEmpty()){
   resList.addAll(nextList);
  }
  
  //
  break;// 外層加入
  }
 }
 //
 return resList;
 }
}

解釋: 還有改良空間,迎接下次修改

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved