在一组数字中查找前20个素数

时间:2015-01-30 13:39:17

标签: algorithm

我正在寻找一种算法来查找一组数字中的前20个素数。

我的第一个想法是探索素性的天真测试。更确切地说,使用所有整数都是6k + i且k整数和i = -2,-1,0,1,2,3这样的事实,素数的形式为6k + -1,我们只需测试数字不大于$ sqrt n $来测试n是否为素数。

但是对于给定的一组数字(不一定是连续的)而言,对于如何以不太慢的方式实际做到这一点并没有太多的想法。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

如果您可以节省几百兆字节,请考虑将适合int的所有素数存储到文件中。然后在运行时测试或查找它们。

答案 1 :(得分:0)

用我的话来说,测试一个数字是否为素数:

$prime = True
for loop (var = $i, from 2 -> sqrt(number)){
   If number % $i = 0 {
      $prime = False // return 0
   }
}

如果我不明白你的问题,请告诉我,我会删除答案..