博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
续x奇数倍(n+2*x)暴力算法是冠军的算法结合数量
阅读量:4630 次
发布时间:2019-06-09

本文共 10490 字,大约阅读时间需要 34 分钟。

// 续6单a,a+2,a+4,a+6,a+8,a+10是共同的数。最低要求a

// 暴力解决方案

首先对结果,后面将代码粘贴:

1次连续n=9,连续值个数: 1;耗时: 0ms,总计: 0ms2次连续n=25,连续值个数: 1;耗时: 0ms,总计: 0ms3次连续n=91,连续值个数: 1;耗时: 0ms,总计: 0ms4次连续n=115,连续值个数: 3;耗时: 0ms,总计: 1ms5次连续n=115,连续值个数: 3;耗时: 0ms,总计: 1ms6次连续n=115,连续值个数: 3;耗时: 0ms,总计: 1ms7次连续n=525,连续值个数: 2;耗时: 0ms,总计: 1ms8次连续n=525,连续值个数: 2;耗时: 0ms,总计: 1ms9次连续n=889,连续值个数: 1;耗时: 0ms,总计: 1ms10次连续n=1131,连续值个数: 1;耗时: 0ms,总计: 1ms11次连续n=1329,连续值个数: 6;耗时: 0ms,总计: 1ms12次连续n=1329,连续值个数: 6;耗时: 0ms,总计: 1ms13次连续n=1329,连续值个数: 6;耗时: 0ms,总计: 1ms14次连续n=1329,连续值个数: 6;耗时: 0ms,总计: 1ms15次连续n=1329,连续值个数: 6;耗时: 0ms,总计: 1ms16次连续n=1329,连续值个数: 6;耗时: 0ms,总计: 1ms17次连续n=9553,连续值个数: 1;耗时: 2ms,总计: 3ms18次连续n=15685,连续值个数: 4;耗时: 1ms,总计: 5ms19次连续n=15685,连续值个数: 4;耗时: 1ms,总计: 5ms20次连续n=15685,连续值个数: 4;耗时: 1ms,总计: 5ms21次连续n=15685,连续值个数: 4;耗时: 1ms,总计: 5ms22次连续n=19611,连续值个数: 4;耗时: 2ms,总计: 8ms23次连续n=19611,连续值个数: 4;耗时: 2ms,总计: 8ms24次连续n=19611,连续值个数: 4;耗时: 2ms,总计: 8ms25次连续n=19611,连续值个数: 4;耗时: 2ms,总计: 8ms26次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms27次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms28次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms29次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms30次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms31次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms32次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms33次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms34次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms35次连续n=31399,连续值个数: 10;耗时: 5ms,总计: 13ms36次连续n=155923,连续值个数: 7;耗时: 92ms,总计: 105ms37次连续n=155923,连续值个数: 7;耗时: 92ms,总计: 105ms38次连续n=155923,连续值个数: 7;耗时: 92ms,总计: 105ms39次连续n=155923,连续值个数: 7;耗时: 92ms,总计: 105ms40次连续n=155923,连续值个数: 7;耗时: 92ms,总计: 105ms41次连续n=155923,连续值个数: 7;耗时: 92ms,总计: 105ms42次连续n=155923,连续值个数: 7;耗时: 93ms,总计: 106ms43次连续n=360655,连续值个数: 5;耗时: 243ms,总计: 349ms44次连续n=360655,连续值个数: 5;耗时: 243ms,总计: 349ms45次连续n=360655,连续值个数: 5;耗时: 243ms,总计: 349ms46次连续n=360655,连续值个数: 5;耗时: 243ms,总计: 349ms47次连续n=360655,连续值个数: 5;耗时: 243ms,总计: 349ms48次连续n=370263,连续值个数: 8;耗时: 14ms,总计: 363ms49次连续n=370263,连续值个数: 8;耗时: 14ms,总计: 363ms50次连续n=370263,连续值个数: 8;耗时: 14ms,总计: 363ms51次连续n=370263,连续值个数: 8;耗时: 14ms,总计: 363ms52次连续n=370263,连续值个数: 8;耗时: 14ms,总计: 363ms53次连续n=370263,连续值个数: 8;耗时: 14ms,总计: 363ms54次连续n=370263,连续值个数: 8;耗时: 14ms,总计: 363ms55次连续n=370263,连续值个数: 8;耗时: 14ms,总计: 363ms56次连续n=492115,连续值个数: 1;耗时: 185ms,总计: 548ms57次连续n=1349535,连续值个数: 2;耗时: 1854ms,总计: 2402ms58次连续n=1349535,连续值个数: 2;耗时: 1854ms,总计: 2402ms59次连续n=1357203,连续值个数: 7;耗时: 22ms,总计: 2424ms60次连续n=1357203,连续值个数: 7;耗时: 22ms,总计: 2424ms61次连续n=1357203,连续值个数: 7;耗时: 22ms,总计: 2424ms62次连续n=1357203,连续值个数: 7;耗时: 22ms,总计: 2424ms63次连续n=1357203,连续值个数: 7;耗时: 22ms,总计: 2424ms64次连续n=1357203,连续值个数: 7;耗时: 22ms,总计: 2424ms65次连续n=1357203,连续值个数: 7;耗时: 22ms,总计: 2424ms66次连续n=2010735,连续值个数: 8;耗时: 1889ms,总计: 4313ms67次连续n=2010735,连续值个数: 8;耗时: 1889ms,总计: 4313ms68次连续n=2010735,连续值个数: 8;耗时: 1889ms,总计: 4313ms69次连续n=2010735,连续值个数: 8;耗时: 1889ms,总计: 4313ms70次连续n=2010735,连续值个数: 8;耗时: 1889ms,总计: 4313ms71次连续n=2010735,连续值个数: 8;耗时: 1889ms,总计: 4313ms72次连续n=2010735,连续值个数: 8;耗时: 1889ms,总计: 4313ms73次连续n=2010735,连续值个数: 8;耗时: 1890ms,总计: 4314ms74次连续n=4652355,连续值个数: 3;耗时: 10583ms,总计: 14897ms75次连续n=4652355,连续值个数: 3;耗时: 10583ms,总计: 14897ms76次连续n=4652355,连续值个数: 3;耗时: 10583ms,总计: 14897ms77次连续n=17051709,连续值个数: 13;耗时: 86082ms,总计: 100979ms78次连续n=17051709,连续值个数: 13;耗时: 86082ms,总计: 100979ms79次连续n=17051709,连续值个数: 13;耗时: 86082ms,总计: 100979ms80次连续n=17051709,连续值个数: 13;耗时: 86082ms,总计: 100979ms81次连续n=17051709,连续值个数: 13;耗时: 86082ms,总计: 100979ms82次连续n=17051709,连续值个数: 13;耗时: 86082ms,总计: 100979ms83次连续n=17051709,连续值个数: 13;耗时: 86082ms,总计: 100979ms84次连续n=17051709,连续值个数: 13;耗时: 86082ms,总计: 100979ms85次连续n=17051709,连续值个数: 13;耗时: 86083ms,总计: 100980ms86次连续n=17051709,连续值个数: 13;耗时: 86083ms,总计: 100980ms87次连续n=17051709,连续值个数: 13;耗时: 86083ms,总计: 100980ms88次连续n=17051709,连续值个数: 13;耗时: 86083ms,总计: 100980ms89次连续n=17051709,连续值个数: 13;耗时: 86083ms,总计: 100980ms90次连续n=20831325,连续值个数: 15;耗时: 34772ms,总计: 135752ms91次连续n=20831325,连续值个数: 15;耗时: 34772ms,总计: 135752ms92次连续n=20831325,连续值个数: 15;耗时: 34772ms,总计: 135752ms93次连续n=20831325,连续值个数: 15;耗时: 34772ms,总计: 135752ms94次连续n=20831325,连续值个数: 15;耗时: 34772ms,总计: 135752ms95次连续n=20831325,连续值个数: 15;耗时: 34772ms,总计: 135752ms96次连续n=20831325,连续值个数: 15;耗时: 34772ms,总计: 135752ms97次连续n=20831325,连续值个数: 15;耗时: 34772ms,总计: 135752ms98次连续n=20831325,连续值个数: 15;耗时: 34772ms,总计: 135752ms99次连续n=20831325,连续值个数: 15;耗时: 34773ms,总计: 135753ms100次连续n=20831325,连续值个数: 15;耗时: 34773ms,总计: 135753ms101次连续n=20831325,连续值个数: 15;耗时: 34773ms,总计: 135753ms102次连续n=20831325,连续值个数: 15;耗时: 34773ms,总计: 135753ms103次连续n=20831325,连续值个数: 15;耗时: 34773ms,总计: 135753ms104次连续n=20831325,连续值个数: 15;耗时: 34773ms,总计: 135753ms105次连续n=47326695,连续值个数: 5;耗时: 319130ms,总计: 452155ms106次连续n=47326695,连续值个数: 5;耗时: 319131ms,总计: 452156ms107次连续n=47326695,连续值个数: 5;耗时: 319131ms,总计: 452156ms108次连续n=47326695,连续值个数: 5;耗时: 319131ms,总计: 452156ms109次连续n=47326695,连续值个数: 5;耗时: 319131ms,总计: 452156ms110次连续n=122164749,连续值个数: 1;耗时: 1395200ms,总计: 1847356ms111次连续n=189695661,连续值个数: 6;耗时: 1705936ms,总计: 3553292ms112次连续n=189695661,连续值个数: 6;耗时: 1705936ms,总计: 3553292ms113次连续n=189695661,连续值个数: 6;耗时: 1705936ms,总计: 3553292ms114次连续n=189695661,连续值个数: 6;耗时: 1705936ms,总计: 3553292ms115次连续n=189695661,连续值个数: 6;耗时: 1705936ms,总计: 3553292ms116次连续n=189695661,连续值个数: 6;耗时: 1705936ms,总计: 3553292ms117次连续n=191912785,连续值个数: 7;耗时: 61964ms,总计: 3615256ms118次连续n=191912785,连续值个数: 7;耗时: 61964ms,总计: 3615256ms119次连续n=191912785,连续值个数: 7;耗时: 61964ms,总计: 3615256ms120次连续n=191912785,连续值个数: 7;耗时: 61964ms,总计: 3615256ms121次连续n=191912785,连续值个数: 7;耗时: 61964ms,总计: 3615256ms122次连续n=191912785,连续值个数: 7;耗时: 61964ms,总计: 3615256ms123次连续n=191912785,连续值个数: 7;耗时: 61964ms,总计: 3615256ms124次连续n=387096135,连续值个数: 1;耗时: 6650201ms,总计: 10265457ms125次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms126次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms127次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms128次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms129次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms130次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms131次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms132次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms133次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms134次连续n=436273011,连续值个数: 16;耗时: 1999567ms,总计: 12265024ms135次连续n=436273011,连续值个数: 16;耗时: 1999568ms,总计: 12265025ms136次连续n=436273011,连续值个数: 16;耗时: 1999568ms,总计: 12265025ms137次连续n=436273011,连续值个数: 16;耗时: 1999568ms,总计: 12265025ms138次连续n=436273011,连续值个数: 16;耗时: 1999568ms,总计: 12265025ms139次连续n=436273011,连续值个数: 16;耗时: 1999568ms,总计: 12265025ms140次连续n=436273011,连续值个数: 16;耗时: 1999568ms,总计: 12265025ms141次连续n=1294268493,连续值个数: 3;耗时: 49257124ms,总计: 61522149ms142次连续n=1294268493,连续值个数: 3;耗时: 49257124ms,总计: 61522149ms143次连续n=1294268493,连续值个数: 3;耗时: 49257124ms,总计: 61522149ms144次连续n=1453168143,连续值个数: 2;耗时: 11962769ms,总计: 73484918ms145次连续n=1453168143,连续值个数: 2;耗时: 11962769ms,总计: 73484918ms.....----- 本次已经跑完了,下一个值超出了1000次;无用耗时: 0ms,总计: xxxxxx135395ms

。。。。。 后面的结果还没算出来,相比看到这里你就发现多线程的优点了。。

。 单线程在4核心的CPU上也仅仅有25%的利用率。

代码例如以下所看到的:

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 * @author http://blog.csdn.net/renfufei */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
> 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; } }

说明: 有改进的余地,欢迎您到下一次修正

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/zfyouxi/p/4818742.html

你可能感兴趣的文章
mybatis的一些基础问题
查看>>
封装、继承、多态
查看>>
visual webgui theme designer
查看>>
【制作镜像】BCEC制作镜像
查看>>
Hadoop学习笔记之三 数据流向
查看>>
程序员眼中的英文单词是这样的
查看>>
Leetcode: Sort List
查看>>
gitlab搭建
查看>>
python_day10
查看>>
ios中的自动释放池
查看>>
Android Layer List 使用实现实例
查看>>
CSipSimple 工程分析 <1>
查看>>
关于DWG文件转换成PDF
查看>>
Jerry眼中的SAP客户数据模型
查看>>
c++, 派生类的构造函数和析构函数 , [ 以及operator=不能被继承 or Not的探讨]
查看>>
CAS (10) —— JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法...
查看>>
[面试]future模式
查看>>
Beta冲刺 (1/7)
查看>>
cap理论与分布式事务的解决方案
查看>>
[PHP] JQuery+Layer实现添加删除自定义标签代码
查看>>