Javascript 素数反转算法不能正常工作

Javascript 素数反转算法不能正常工作,javascript,Javascript,我正在尝试解决以下问题: 考虑0到10的范围。这个范围内的素数是:2,3,5,7,因此素数对是:(2,2),(2,3),(2,5),(2,7),(3,3),(3,5),(3,7),(5,5),(5,7),(7,7) 让我们以一对(2,7)为例,得到乘积,然后将结果的数字相加如下:2*7=14,1+4=5。我们看到5是一个素数。类似地,对于对(7,7),我们得到:7*7=49和4+9=13,这是一个素数 您将获得一个范围,您的任务是返回恢复为素数的对数,如上所示。在(0,10)范围内,只有4个素数

我正在尝试解决以下问题:

考虑0到10的范围。这个范围内的素数是:2,3,5,7,因此素数对是:(2,2),(2,3),(2,5),(2,7),(3,3),(3,5),(3,7),(5,5),(5,7),(7,7)

让我们以一对(2,7)为例,得到乘积,然后将结果的数字相加如下:2*7=14,1+4=5。我们看到5是一个素数。类似地,对于对(7,7),我们得到:7*7=49和4+9=13,这是一个素数

您将获得一个范围,您的任务是返回恢复为素数的对数,如上所示。在(0,10)范围内,只有4个素数对以类似方式结束为素数:(2,7),(3,7),(5,5),(7,7)。因此,求解(0,10)=4)


请注意,范围的上限不会超过10000。(0,10)的范围意味着:0在不亲自调试的情况下,这里有一些一般的想法:

您的(非常简单的)代码的基本思想似乎是正确的(尽管它的效率可能会有所提高)

如果整个代码都出错了,那么它一定是在某个特定的地方出错了

因此,您需要检查每个阶段是否正确

如果你的成绩太高,而且你确信这一点, 它表明一些非素数可能在你的素数列表中。 在生成阶段或检查最终答案阶段。 或者在某些情况下,您的循环可能走得有点太远。

请注意,与平方根比较时,不需要 平方根的整数形式。例如,sqrt(132)=11.489。。。和 7<11.489以及7<11

我的方法是找到可能失败的最小案例,并手动检查所有中间阶段。或者写一些检查代码


如果你要反复调用“solve”,你不需要一次又一次地生成所有的素数和对(特别是素数),因为它们从未改变过(或者至少很久没有改变)。

正如@glubus在上面的评论中提到的,你的
b
上限值,您需要将
b-1
传递给
getPrimes
方法

 var pairs = generatePairs(getPrimes(a, b-1));

为什么
a:94 b:971
返回
3777
?您在问题中提到(0,10)的范围意味着:0@Glubus这正是问题所在:)我看到您删除了关于将句子分解为单词的问题。我已经准备好了答案。如果你仍然感兴趣并取消删除你的问题,我会发布它。这不是对OP问题的回答,应该是一个评论。@Glubus:我在我的回答中添加了粗体部分,我相信这部分回答了OP的问题,但没有指出具体的代码行。重点是你说了大约10件不同的事情,这使得你无法从你的帖子中提炼出任何实质性的东西。你粗体的一行以“或”开头,这意味着你根本不确定情况是否如此。如果你不确定你的答案是否完全解决了问题,那么它就不是答案。注意到我在评论中对我怀疑的问题非常具体吗?这就是你在回答中需要的具体程度。我仍然评论它的原因是因为我不确定,我不想浪费任何人的时间在一些虚拟点上。
 var pairs = generatePairs(getPrimes(a, b-1));