大数字怎么样? (素性测试)

时间:2012-02-09 11:28:01

标签: c++ algorithm primality-test

这是一个“真正的”任务,可以用任何语言编写(例如C / C ++)

那么,我的任务是'生成'长度超过50位的随机数(最大值= 200)?

然后,我必须在素性测试中检查这个数字。

那么,这个任务是“真实的”以及它将消耗多少时间/资源?

另一种方法是从特殊类中生成素数Mersenn数或其他数(可以使用哪个类?)

2 个答案:

答案 0 :(得分:2)

有一些有效的概率算法用于素数测试,例如Miller-Rabin,通常用于此类目的。

使用随机算法挑选一个随机数并测试素数是有效的,因为素数的密度可以保证你需要在n位数字中选择n个数来进行测试。

答案 1 :(得分:1)

使用Miller-Rabin primality test。此外,您需要一个大小数的库,因为50位数字不适合本机数据类型。

这是一个Javascript implementation of Miller-Rabin,它完成了50次米勒 - 拉宾的迭代。它会在几秒钟内完成。