|
发表于 2005-12-9 13:14:25
|
显示全部楼层
楼主大概对什么是梅森素数没什么概念
梅森素数是形如2^p-1的素数,其中p是素数
所以它寻找的时候并非从2,3,4,5,6,7,8,9,10,...之类的数中去寻找
而是从2^2-1,2^3-1,2^5-1,2^7-1,2^11-1,2^13-1,...之类的数中去寻找
所以“计算某一位上的所有数还是计算某一位上的一个数”这种说法是不存在的
即除了个位数只可能是1,3,7,9外
别的位数均可能是0,1,2,3,4,5,6,7,8,9
10000指的是迭代次数。
卢卡斯-莱默素性测试是非常简单的:如果 P > 2, 2^P-1 是素数当且仅当 S[P-2] = 0,其中,S0 = 4,S[N] = (S[N-1]^2 - 2) mod (2^P-1)。例如,证明 2^7 - 1 是素数的过程如下:
S0 = 4
S1 = (4 * 4 - 2) mod 127 = 14
S2 = (14 * 14 - 2) mod 127 = 67
S3 = (67 * 67 - 2) mod 127 = 42
S4 = (42 * 42 - 2) mod 127 = 111
S5 = (111 * 111 - 2) mod 127 = 0
S[N] = (S[N-1]^2 - 2) mod (2^P-1)。
这个算式运行一次算迭代一次
10000的意思就是这个算是连续运算了10000次
所以总共需要迭代p-2次才能确定2^p-1这个数是不是素数 |
|