Java 用Eratosthenes筛检验素数

Java 用Eratosthenes筛检验素数,java,algorithm,Java,Algorithm,以下面的问题为例:“给定的整数范围内有多少个数字,它们的数字和平方和都是素数?” 我四处观察,发现了一个有趣的问题并试图解决它 因此,人们可以用普通的方式检查素数,即使用for循环从2到i并检查整除性 有趣的是BlueRaja-Danny Pflughoeft建议了一个技巧:“因为你只需要筛选到你正在测试的素数的平方根,你只需要从3到*sqrt运行你的筛选(⌈日志10(B)⌉*81)” 我有一个关于Eratosthenes的筛的实现的问题布尔数组的大小是多少,其中包含要为筛处理的数字。?有人可以

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

我四处观察,发现了一个有趣的问题并试图解决它

因此,人们可以用普通的方式检查
素数
,即使用
for
循环从
2
i
并检查整除性

有趣的是
BlueRaja-Danny Pflughoeft建议了一个技巧:“因为你只需要筛选到你正在测试的素数的平方根,你只需要从3到*
sqrt运行你的筛选(⌈日志10(B)⌉*81)


我有一个关于Eratosthenes的
筛的实现的问题

布尔数组的大小是多少,其中包含要为筛处理的数字。?有人可以编写代码或任何提示吗?

下面是一个使用Java实现Eratosthenes筛选的示例:

有关问题的第二部分,请参见链接:

“n位数字的最大平方和为n*9*9=n*81。数字B中的位数为⌈日志10(B)⌉. 因为您只需要筛选到您正在测试的素数的平方根,所以您只需要从3运行筛选到sqrt(⌈日志10(B)⌉*81).即使B=10亿,也意味着需要筛选的最大值为28。”


通过查看实现,我正确理解了算法。非常感谢你。但是我还是不明白下一行。因为您只需要筛选到您正在测试的素数的平方根,所以您只需要从3到QRT运行筛选(⌈日志10(B)⌉*81)