找到前100万个素数

时间:2012-01-11 04:56:34

标签: objective-c primes

我想获得第一百万个素数。

我知道寻找小素数的方法。我的问题是,如何将这么大的数字存储在简单的数据类型中,如long,int等?

2 个答案:

答案 0 :(得分:4)

第百万个素数不到1600万,而今天计算机中的内存量是1600万个布尔值的普通C数组(每个可以使用1个字节)并不是那么大......

因此,分配您的大数组,用true填充它,将第一个元素视为表示整数2(即索引+ 2是表示的值),并实现标准筛的skip n / set false版本。计算真实情况,当你达到100万时,你可以停下来。

还有其他方法,但这有简单的优点。

答案 1 :(得分:1)

你可以分配一个1000000整数的数组 - 它只有4兆字节,按今天的标准来说是一个很小的数字。 Prime#1000000应该适合32位整数(素数#500000低于8000000,因此2000000000应该超过前1000000个素数的范围)。

您更有可能遇到时间问题,而不是计算空间。请记住,当你到达候选素数的平方根时,你可以停止测试候选除数,并且你可以使用你找到的候选除数的素数。