素数检查器令人难以置信地缓慢

pim*_*vdb 3 vb.net algorithm primes

我有这段代码检查给定的数字是否为素数:

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
Run Code Online (Sandbox Code Playgroud)

我只把它用于数字1E7 <= x <= 2E7.然而,它非常慢 - 我几乎无法每秒检查300个数字,因此检查所有数据x需要超过23天...

有人可以给出一些改进提示或说出我可能会以这种方式冗余地做什么吗?

Viv*_*oel 6

这是用于检查素数的通用算法.如果要批量检查素数,请使用算法http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes