没事写代码之连续质数
2011-06-30 11:13
239 查看
好久没写博了,前段时间有空,就参加了Intel多线程挑战赛,顺便写写自己的解题思路吧。
题目地址
注:欢迎大家转载,但请注明出处,谢谢http://blog.csdn.net/xinghun61/archive/2011/06/30/6576692.aspx
基本术语解释
连续完全幂(N, M)——N、M均为完全幂,N<M,且在N、M之间的自然数集合中(不含N、M),没有完全幂存在。
其中,N叫M的前驱,M叫N的后继。
完全幂集(N, M)——指在N、M之间的所有自然数中的所有完全幂的集合。
解题思路
先将所有满足条件的质数计算出来,并将所有质数加起来,假设和为M,然后,计算完全幂集(4, M),最后,只要在所有质数组合中找到与完全幂集(4, M)中的元素的匹配项,就得到我们要的结果了。
关键算法分析
质数的计算比较简单,网上也能找到一堆代码,就不多说了。现在,关键是完全幂集(4, M)该如何计算呢?
我们知道最小的完全幂是4,那就从她开始,一个一个的找后继吧。
先上张图吧。
上图演示了如何通过已知的完全幂Nm,找到对应的后继Xy。换句话也就是说,通过遍历X,用上面的公式计算出对应的y值,然后,从所有X、y的组合中,找到使Xy最小的组合,就是我们要找的后继了。
另一个公式:
这个公式是判断2个完全幂的大小的,上面找Xy最小组合就是靠的她了。
已知的缺陷
1. 在计算完全幂集时,只有在知道了前驱之后,才能计算后继,导致只能在一个线程中处理,CPU内核(多核下)利用不充分。
2. 在计算机中,y * lgX / lgX ≠ y,因此,上面计算y的公式需要修改为y = Int(m * lgN / lgX + 1.0000000001),但这种误差的引入是否会对最终结果造成影响,暂时无法估计。
资源下载
Exe程序:地址
源代码:地址 (Delphi2010调试通过)
为开源贡献自己的一点热情吧,呵呵。源码和程序分开了,自己按需取吧。
题目地址
注:欢迎大家转载,但请注明出处,谢谢http://blog.csdn.net/xinghun61/archive/2011/06/30/6576692.aspx
基本术语解释
连续完全幂(N, M)——N、M均为完全幂,N<M,且在N、M之间的自然数集合中(不含N、M),没有完全幂存在。
其中,N叫M的前驱,M叫N的后继。
完全幂集(N, M)——指在N、M之间的所有自然数中的所有完全幂的集合。
解题思路
先将所有满足条件的质数计算出来,并将所有质数加起来,假设和为M,然后,计算完全幂集(4, M),最后,只要在所有质数组合中找到与完全幂集(4, M)中的元素的匹配项,就得到我们要的结果了。
关键算法分析
质数的计算比较简单,网上也能找到一堆代码,就不多说了。现在,关键是完全幂集(4, M)该如何计算呢?
我们知道最小的完全幂是4,那就从她开始,一个一个的找后继吧。
先上张图吧。
上图演示了如何通过已知的完全幂Nm,找到对应的后继Xy。换句话也就是说,通过遍历X,用上面的公式计算出对应的y值,然后,从所有X、y的组合中,找到使Xy最小的组合,就是我们要找的后继了。
另一个公式:
这个公式是判断2个完全幂的大小的,上面找Xy最小组合就是靠的她了。
已知的缺陷
1. 在计算完全幂集时,只有在知道了前驱之后,才能计算后继,导致只能在一个线程中处理,CPU内核(多核下)利用不充分。
2. 在计算机中,y * lgX / lgX ≠ y,因此,上面计算y的公式需要修改为y = Int(m * lgN / lgX + 1.0000000001),但这种误差的引入是否会对最终结果造成影响,暂时无法估计。
资源下载
Exe程序:地址
源代码:地址 (Delphi2010调试通过)
为开源贡献自己的一点热情吧,呵呵。源码和程序分开了,自己按需取吧。
相关文章推荐
- js实现图片向上连续滚动特效代码(含注释)
- 找出字符串中找出连续最长的数字串代码实现及思路
- --连续不间断横向滚动图片代码--
- 在家没事,看看boost的代码
- 图片连续循环滚动代码(向上、下、左、右)
- 连续滚动的广告代码
- 编写html表格输出的时候有时候会出现同一列连续出现两行或者是三行的数据内容一样,并且我们想将这些行合并起来,这个时候我们就需要以下这些代码
- 没事做,贴个代码。
- 判断质数(isPrime)的方法——Java代码实现
- 字符串中找出连续最长的数字字符串的实例代码
- 连续滚动图片代码
- 连续不间断横向滚动图片代码
- 找出一串数字中,n个连续的数之和最大c++代码实例及运行结果
- 贴点国外大神代码,没事瞅瞅
- 不错的滚动JS代码 分为小跳中跳和大跳还有连续
- 网页中图片连续滚动代码 (转)
- 符合web标准的连续滚动图像的js代码
- java 获取质数的代码片段
- 2012世界末日倒计时代码 原来没事虚惊一场
- 尹老师视频代码(质数判断C语言)