问题标签 [sieve]

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.

0 投票
1 回答
233 浏览

java - 关于埃拉托色尼筛

我在使用eratosthenes 的筛子时遇到了一些麻烦。所以我从一本名为“Schaum's outlines”的书中得到了筛子的数学计算,但我认为这本书的编程代码错误...... 这是书中的代码:

所以是的,由于无法识别“Sieve()”这一事实,我使用了代码并进行了一些细微的更改。下面是我的代码:

所以......我做错了什么?谢谢您的帮助!

0 投票
2 回答
84 浏览

java - Java 数据类型问题

我编写了一个函数来使用 Eratosthenes 筛法处理素数。该函数使用整数可以正常工作,但我现在正在尝试实现对 long 的支持,以便我可以处理大数。

我似乎无法让函数与 long 一起使用,也看不出明显的原因。

错误是指来自类型转换等的典型精度警告,但我无法找出导致它们的原因:

这是功能:

任何帮助将不胜感激!

0 投票
10 回答
13502 浏览

java - Java 8 Stream,得到头和尾

Java 8 引入了一个类似于 Scala 的Stream的Stream类,这是一个强大的惰性结构,使用它可以非常简洁地执行以下操作:

我想知道是否有可能在 Java 8 中做到这一点,所以我写了这样的东西:

相当简单,但它会产生,java.lang.IllegalStateException: stream has already been operated upon or closed因为两者findFirst()都是skip()终端操作,Stream只能执行一次。

我真的不需要用完流两次,因为我只需要流中的第一个数字,其余的作为另一个流,即相当于 Scala 的Stream.headStream.tail. Java 8Stream中是否有可以用来实现此目的的方法?

谢谢。

0 投票
3 回答
208 浏览

java - Java Eratostenes 筛子,只打印给定天花板上最大的素数?

大家!我有一个 java 应用程序,它显示从 2 到给定数字(用户输入)的所有素数。我怎样才能打印出给定范围内的最后一个数字,我的意思是最大的一个?例如:如果用户输入的是 12,编译器只打印 11,而不是 2,3,5,7,11。这是代码:

我正在考虑创建另一个整数数组,然后调用最后一个元素(这将是存储的最后一个数字),但我不知道该怎么做。先感谢您!

0 投票
3 回答
476 浏览

python - Eratosthenes的Python筛子不起作用

首先,这是家庭作业,我目前正在 python 上研究 Eratosthenes 筛。我的程序看起来像:

当我的程序打印“素数”时,我得到:

为什么列表中有合数?看起来程序应该可以工作

#

编辑了程序,现在看起来:

仍然无法正常工作,出现错误;“ValueError:list.remove(x):x不在列表中”

0 投票
1 回答
188 浏览

java - 埃拉托色尼筛算法 N 次运行时执行时间尖峰的原因

我用 Java 开发了埃拉托色尼筛算法,我想测量它的性能。

基本上我运行“核心算法”(不是整个应用程序)5000 次(使用 for 循环)并测量它的执行时间。

这是我使用的代码:

结果如下: 在此处输入图像描述

如您所见,有一些较大的初始尖峰(7913 和 1548)和一些“周期性”尖峰。我该如何解释这些尖峰?我已经禁用了 Internet 连接(硬件板)和所有可能在后台运行的服务(Windows 7;这意味着没有防病毒等)。此外,我将 -Xmx 和 -Xms 参数设置为非常大的内存量。所以我基本上是“单独”运行应用程序。

我知道这是一个很难的问题,但一些提示将不胜感激。

编辑:我已经根据“beny23”的建议修改了我的算法,现在不再有周期性的尖峰。然而,有一些很大的初始峰值。 在此处输入图像描述

或者(N=1000 而不再是 N=10000): 在此处输入图像描述

0 投票
1 回答
168 浏览

c - 得到结果少 1 或多 1,除数计数程序 - C

我正在解决一个问题。
问题链接:

问题是关于在 L 和 R 的给定范围内计算除数素数的数字(除数素数的数字)。 1<=L<=R<=10^12 和 LR<=10^6

我的代码为小于 10^10 的输入提供了正确的输出。但是对于大于 10^10 的数字,答案要么比正确答案小 1,要么比正确答案大 1。我无法弄清楚问题可能是什么。我的解决方案:

我的方法是首先计算给定范围内的所有素数(因为它们的除数为 2,这是素数),然后检查范围内完美平方的除数,因为只有完美的平方才能有素数除数。

为了计算素数,我使用了分段筛法。为了计算完美平方的除数,我使用了这样一个事实:如果一个数 N 具有素因数分解 N = (p)^a * (q)^b * (r)^c 那么 N 的除数将是 (a+1 ) (b+1) (c+1) [ https://stackoverflow.com/a/110365 ]

谁能帮我这个..

0 投票
2 回答
446 浏览

haskell - 如何使用高阶函数为素数计算定义筛函数?

sieve在 Haskell 中有一个用于素数计算的递归定义。map但我不知道如何使用orfilter等​​高阶函数编写相同的函数。有人可以给我看看吗?

0 投票
2 回答
474 浏览

c++ - 阿特金的筛子出奇地慢

我最近对素数非常感兴趣,并尝试编写程序来计算它们。我能够筛选出能够在几秒钟内计算出一百万个素数的 Sundaram 程序。我相信这很快,但我想要更好。我继续尝试制作一个阿特金筛子,在从 Wikipedia 复制伪代码后,我在 20 分钟内将工作 C++ 代码拼凑在一起。

我知道它并不完美,因为毕竟它的伪代码。虽然我期待至少比我的 Sundaram Sieve 更好,但我错了。它非常非常慢。我已经看过很多次了,但我找不到任何可以做出的重大改变。查看我的代码时,请记住,我知道它效率低下,我知道我使用了系统命令,我知道它无处不在,但这不是一个项目或任何重要的东西,它是为我准备的。

0 投票
2 回答
107 浏览

python - 在python中生成除数数组

我希望将数字 n 的除数作为存储在第 n 个位置的主列表中的列表。例如长度为 11 的筛子,我想要 sieve[6] == [2,3,6](忽略 1)。我下面的代码不起作用,并以一种令人不快的方式让我感到惊讶:

请问可以解释一下吗?