问题标签 [sieve-of-eratosthenes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Erathostenes ArrayIndexOutOfBounds 筛
试图在项目 euler 上实现一个简单的 Erathostenes 筛来解决这个问题:
10以下的素数之和为2 + 3 + 5 + 7 = 17。
求两百万以下的所有素数之和。
但是,我的代码不断返回此错误:
线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:Prime.main 的 -2147479015(Prime.java:28)
谁能给我任何暗示为什么?这是代码:
java - 如何在java中获得表大小2 ^ 32
我必须进入java,protected final static int [] SIEVE = new int [ 1 << 32 ];
但我不能强迫java。
我得到的最大筛子是 2^26 我需要 2^32 来完成我的作业。我尝试使用掩码,但我需要 SIEVE[n] = k 其中 min{k: k|n & k >2}。
编辑我需要使用 Sieve 找到从 2 到 2^63-1 的因子数,并且 sieve 必须具有 P[n]= 是除数为 n 的最小素数的信息。我知道用筛子我可以将数字分解为 2^52。但是如何在坚持内容的情况下进行练习。
EDIT x2 问题已解决
c - 埃拉托色尼筛
我在解决有关Project Euler的问题时阅读了 Eratosthenes 的筛子。我相信你们知道我在说哪个问题。事情就是这样。我的代码设法正确显示了 100 万以下的所有素数。但是,当我为 200 万个尝试相同的实现时,它给了我一个分段错误...我对错误发生的原因有一定的了解,但不知道如何纠正它...这是 100 万以下素数的代码.
primes - Erathostenes 筛.. 找到范围内的素数。如何获得起点?
**注意:这与大学作业有关。我只是要求一些正确方向的指导。
我有一个单线程解决方案来查找素数(作业是转换为多线程解决方案)。它目前说从要检查的数字列表开始。从第一个素数 2 开始。(对于 0...N)。
我希望能够将列表 (0...N) 划分为 (0...25)、(26...50)、(51...75) 和 (76...100) )。
如果每个列表的起点是第一个素数。我如何找到它?我必须有一个单独的功能来获得它吗?
谢谢。
python - 循环重复/卡住?蟒蛇 3.2
我正在尝试为埃拉托色尼筛子编写一个 python 脚本。我已经完成了所有工作,但是当我告诉程序测试每个数字是否是 √ 输入下方的至少一个素数的倍数时。它运行良好,但是当我尝试删除一个倍数时,它一直有效,直到它尝试删除 6 两次......我一直在查看我的代码,但似乎无法找出原因。我对 Python 很陌生,所以非常感谢您的帮助!--- 请注意,由于 SOF 制作代码块的方式,我的代码间距已关闭:
python - Python Eratosthenes Sieve 算法优化
我正在尝试实施埃拉托色尼筛法。输出似乎是正确的(减去需要添加的“2”),但如果函数的输入大于 100k 左右,它似乎需要过多的时间。我可以通过哪些方式优化此功能?
c - Spoj PRIME1 使用 Eratosthenes 筛子(在 C 中)
我正在尝试使用 Eratosthenes 的分段筛解决问题PRIME1 。我的程序在正常筛子上正常工作,最高可达NEW_MAX
. n > NEW_MAX
但是在分段筛分发挥作用的情况下存在一些问题。在这种情况下,它只会打印所有数字。以下是包含相关测试用例的代码链接:http: //ideone.com/8H5lK#view_edit_box
更新:感谢您的回复丹尼尔。我实施了一些你的建议,我的代码现在产生了正确的输出:-
但是我下面的筛子功能进一步考虑了您的其他建议会产生不正确的输出:-
java - 提高java中埃拉托色尼筛法的效率
我在 Java 中编写了埃拉托色尼筛法的代码,但我面临一些时间和空间效率问题。这是代码:
对于高达 10^3 的输入,它似乎工作正常,在 10^4 时它只是挂起,在 10^5 及以上时我得到OutOfMemoryError。代码似乎工作正常,但我想把它再固定一点。有什么建议么?
java - 查找给定范围内的所有素数
我正在编写这个 Java 程序来查找给定范围之间的所有素数。因为我正在处理非常大的数字,所以我的代码似乎不够快并且给了我一个时间错误。这是我的代码,有人知道让它更快吗?谢谢。
c - 在给定素数之后找到 n 个素数,而不使用任何检查素数的函数
如何编写程序以在给定数字后找到 n 个素数?例如,100 后的前 10 个素数,或 1000 后的前 25 个素数。编辑:以下是我尝试过的。我以这种方式获得输出,但我们可以在不使用任何素数测试功能的情况下做到这一点吗?