我有一段代码检查给定的数字是否是素数:
If x Mod 2 = 0 Then
Return False
End If
For i = 3 To x / 2 + 1 Step 2
If x Mod i = 0 Then
Return False
End If
Next
Return True
我只把它用在数字上。然而,它是非常缓慢的-我几乎不能检查300个数字每秒,所以检查所有的
1E7 <= x <= 2E7
,将需要超过23天…有人能给我一些改进的建议吗?或者说我可能会用这种方式做些多余的事情吗?
最佳答案
你一定要改变你的算法!您可以尝试Sieve of Eratosthenes或更高级的Fermat primality test。请注意,您的代码将更加复杂,因为您需要实现模块化算法。查看here一些更先进的数学方法的列表。