使用Eratosthenes筛选检查素数

时间:2012-04-15 18:32:39

标签: java algorithm

采取以下问题:“在给定的整数范围内有多少个数字,它们的数字和它的平方和都是素数?”

我正在观看codereviewhere我发现了一个有趣的问题并试图解决它。

因此,我们可以通过普通方式检查prime numbers,即使用for2i的循环,并检查是否可用。

有趣的是hereBlueRaja - Danny Pflughoeft提出了一个诀窍:“因为你只需要筛选你正在测试素数的平方根,你只需要将你的筛子从3移到* sqrt(⌈log10(B)⌉*81)”。

我对Sieve of Eratosthenes的实施有疑问。boolean array的大小是多少,其中包含要筛选的数字。有人可以写一个代码或任何提示吗?

1 个答案:

答案 0 :(得分:1)

以下是使用Java实现Eratosthenes筛选的示例:link

关于问题的第二部分,请参阅this链接:

  

" n位数的最大平方和是n * 9 * 9 = n * 81。数字B中的位数是⌈log10(B)⌉。因为你只需要筛选你正在测试素数的平方根,你只需要从3到sqrt(⌈log10(B)⌉* 81)进行筛选。即使B = 10亿,这意味着你需要筛选的最大值是28。"