- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 Project Euler Problem 50,其中指出:
The prime 41, can be written as the sum of six consecutive primes:
41 = 2 + 3 + 5 + 7 + 11 + 13 This is the longest sum of consecutive primes that adds to a prime below one-hundred.
The longest sum of consecutive primes below one-thousand that adds to a prime, contains 21 terms, and is equal to 953.
Which prime, below one-million, can be written as the sum of the most consecutive primes?
为了确定素数中的项P(如果它完全可以写成素数之和),我使用所有素数(按递增顺序)的滑动窗口,直到(但不包括)P,并计算所有这些窗口的总和,如果总和等于考虑的素数,我计算窗口的长度...
这对于 1000 以内的所有素数都可以正常工作,但对于 10**6 以内的素数来说,速度非常慢,所以我希望memozation 会有所帮助;在计算滑动窗口之和时,做了很多双重工作......(对吗?)
所以我在网上找到了标准的 memoizaton 实现并将其粘贴到我的代码中,这是正确的吗? (我不知道它在这里应该如何工作......)
primes = tuple(n for n in range(1, 10**6) if is_prime(n)==True)
count_best = 0
##http://docs.python.org/release/2.3.5/lib/itertools-example.html:
## Slightly modified (first for loop)
from itertools import islice
def window(seq):
for n in range(2, len(seq) + 1):
it = iter(seq)
result = tuple(islice(it, n))
if len(result) == n:
yield result
for elem in it:
result = result[1:] + (elem,)
yield result
def memoize(function):
cache = {}
def decorated_function(*args):
if args in cache:
return cache[args]
else:
val = function(*args)
cache[args] = val
return val
return decorated_function
@memoize
def find_lin_comb(prime):
global count_best
for windows in window(primes[0 : primes.index(prime)]):
if sum(windows) == prime and len(windows) > count_best:
count_best = len(windows)
print('Prime: ', prime, 'Terms: ', count_best)
##Find them:
for x in primes[::-1]: find_lin_comb(x)
(顺便说一句,素数元组的生成速度“相当”快)
感谢所有的意见,我只是一个业余爱好程序员,所以请不要对我提出任何建议。
谢谢!
编辑:这是一个工作代码粘贴,没有破坏缩进: http://pastebin.com/R1NpMqgb
最佳答案
This works fine for all primes up to 1000, but for primes up to 10**6 it is very slow, so I was hoping memozation would help; when calculating the sum of sliding windows, a lot of double work is done...(right?)
是的,没错。当然,对于 106 以内的素数来说,速度会很慢。
假设你有n
N
以内的素数,按升序编号,p_1 = 2, p_2 = 3, ...
。当考虑是否素数时。 k
是连续素数的总和,您考虑所有窗口 [p_i, ..., p_j]
,成对 (i,j)
与 i < j < k
。有(k-1)*(k-2)/2
其中。历尽一切k
至n
,您检查 n³/6
总共窗口数(计算多重性,您总共检查 w(i.j)
次 n-j
次)。即使忽略创建窗口并将其求和的成本,您也可以看到它的缩放效果如何:
N = 1000
,有n = 168
素数和大约 790000 个要检查的窗口(计算重数)。N = 10**6
,有n = 78498
素数及约 8.3*10**13
要检查的窗口。现在考虑创建和求和窗口的工作,将其估计为 j-i+1
。用于总结 j-i+1
w(i,j)
中的素数, p_k
的工作关于k³/6
,总工作量大致变为 k**4/24
。 N = 1000
大约 3300 万步,花生,但差不多1.6*10**18
对于 N = 1000000
.
一年大约包含3.1*10**7
秒,对于 ~3GHz CPU,大约是 1017 个时钟周期。因此,我们讨论的是需要大约 100 个 CPU 年的操作(可能是 10 倍左右)。
我想你不愿意等那么久;)
现在,通过内存,您仍然可以多次查看每个窗口,但只需对每个窗口进行一次计算。这意味着您需要大约 n³/6
用于窗口的计算,并查看 n³/6
任何窗口的时间。
8.3*10**13
有时,即使查找只需要一个周期,也要几个小时。8.3*10**13
窗口来内存。您没有那么多内存,除非您可以使用非常的高清硬盘。您可以通过丢弃不再需要的数据并仅在需要时计算窗口数据来规避内存问题,但是一旦您知道何时可以丢弃哪些数据,您应该能够看到更好的方法。
The longest sum of consecutive primes below one-thousand that adds to a prime, contains 21 terms, and is equal to 953.
这告诉您关于生成该总和的窗口的什么信息?可以从哪里开始,又可以从哪里停止呢?如何使用这些信息创建有效的算法来解决问题?
关于python - 滑动窗口和内存的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10673577/
这是在我的 MainActivity 中用作 BroadcastReceiver 的代码 mRegistrationBroadcastReceiver = new BroadcastRecei
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我想在大部分时间隐藏 UISearchBar,只在用户需要时调用它来显示。 我在 Interface Builder 中放置了一个 UISearchBar 并将其隐藏在 View 后面,当用户单击按钮
我有一个包含 CCMenuItemImage 的菜单(“myMenu”)。我希望此菜单能够检测手指滑动并相应地滑动。 我的问题是 CCMenuItemImage 似乎吸收了触摸事件。当用户触摸 CCM
我正在寻找一个简单的 jQuery 或 Javascript 解决方案,以使导航侧边栏在用户向下滚动页面时顺利跟随用户。像这里一样:http://ucon-acrobatics.com/shop/ 任
我有一个 ListView 控件来显示项目,我想提供一个滑动/滑动手势来选择一个项目。我用 GestureRecognizer类来识别交叉滑动手势,但我还想通过水平移动选择的项目来为这个手势设置动画。
我想将 String 行标记化为标记(存储到 String 表中),并且我只能使用 java.io.*它是为了实现一个计算器。 例如:第一行:1+2+3第二行:1+ 2*3(标记之间有空格) 进入表{
我有一个 ListView 控件来显示项目,我想提供一个滑动/滑动手势来选择一个项目。我用 GestureRecognizer类来识别交叉滑动手势,但我还想通过水平移动选择的项目来为这个手势设置动画。
我有一个导航栏,当单击菜单图标时,它将滑入“#secondary-nav”并隐藏“#primary-nav”。然而 jquery 似乎没有显示“#secondary-menu”。下面提供的是 HTMl
这个问题已经有答案了: how to make a sliding up panel like the Google Maps app? (2 个回答) 已关闭 7 年前。 我正在寻找类似的实现,如下
我有 ViewPager(Slide) 和 3 张图片。共有三个图像是通过 Internet 下载的。如果我将图片换到服务器上的另一台服务器上,链接保持不变,但应用程序中的图片没有改变,仍然是缓存中的
我在 gridview 中创建了两个按钮。 我想达到以下目的,但不知道应该用什么方法? 首先我触摸第一个按钮,将显示 toast 1 msg。通过将我的手指滑到第二个按钮而不抬起我的手指,将显示 to
所以我设置了一个小的 jquery 动画,用户将鼠标悬停在容器上一段时间,这会导致容器 split ,然后显示内部信息。 我不希望鼠标一进入容器就开始动画,所以我在动画上放了一个delay()。现在动
这个问题在这里已经有了答案: Simulate swipe with mouse in javascript (5 个答案) 关闭 7 年前。
我希望我的 Sprite 像在冰上一样滑动。因此,如果他在地面上,那么他可以正常行走,但当他接触冰时,他会滑动,直到有东西阻止他。有谁知道如何才能做到这一点?谢谢 最佳答案 像“Sprite Move
我的代码有几个问题:HTML: Bellevue
我正在尝试实现从 fragment1 过渡到 fragment2 的滑动动画。我正在使用 setCustomAnimations 方法。而且我知道我需要使用框架方法来替换 fragment 。 我的代
我不知道你们是否听说过 app chomp,但应用程序中有一个布局,如下图所示。我想知道他们是如何设置的,我将如何使用它来为我自己的应用程序制作类似的东西。有趣的是,当你滑动时,没有像水平 Scrol
我想检测用户何时在一个单元格占据整个屏幕宽度的 collectionView 中向左或向右滑动。是否可以不添加手势识别器。我试过添加手势识别器,但只有当我们将 collectionView 的 scr
我正在尝试开发一个应用程序来复制类似 tinder 的基于滑动的提要。该应用程序的想法与火种非常相似,也具有向右滑动和向左滑动匹配功能。 到目前为止我做了什么-我在 MongoDB 中创建了一个刷卡集
我是一名优秀的程序员,十分优秀!