在C / C ++中生成2个限制之间的随机素数

是否有内置函数可以在C / C ++中的2个给定限制之间生成随机素数?

我想要一个可以生成100万到10亿之间随机素数的函数

你可以这样有效地做到这一点:

  1. 在该间隔中生成随机数;
  2. 检查它是否可以被前几个素数中的任何一个整除(例如2 .. 17 ,实验以获得最佳结果)。 如果是,请转到1;
  3. 使用米勒 – 拉宾来测试素性。

还可以看一下类似的,更复杂的想法。

当我不得不这样做时,我创建了一个名为isPrime()的函数。 isPrime()将检查并确定一个数字是否为素数。

isPrime()有两个不同的函数,一个将永远运行并打印每个素数而另一个将运行到一定数量的函数。

您可以使用i和j之间的所有素数填充数组。 然后生成一个小于或等于数组大小的随机数。 使用此随机数从数组中选择一个元素。

希望这可以帮助!

要在两个边界之间生成随机数,请执行此操作

 extern unsigned int urand(); int lower = 1000000; int upper = 1000000000; int p = urand() % (upper - lower) + lower; 

为了测试一个接近10亿的数字是否为素数,按所有素数

 unsigned short primes[3400] = { 2, 3, 5, .. 31657 } 

并将它们全部分开。 如果所有试验区都有余数!= 0则该数字为素数。

我怀疑任何更复杂的素性测试对于这样的小素数都会更快。