Factors of a Mersenne number: Difference between revisions
Content added Content deleted
Line 880: | Line 880: | ||
def mersenne_factor(p) |
def mersenne_factor(p) |
||
mers_num = 2.to_big_i ** p - 1 |
|||
kp2 = p2 = 2.to_big_i * p |
|||
while ( |
while (kp2 - 1) ** 2 < mers_num |
||
q = |
q = kp2 + 1 |
||
if prime?(q) && [1, 7].includes?(q % 8) && (powmod(2, p, q) == 1) |
if prime?(q) && [1, 7].includes?(q % 8) && (powmod(2, p, q) == 1) |
||
# q is a factor of 2**p-1 |
# q is a factor of 2**p-1 |
||
return q |
return q |
||
end |
end |
||
kp2 += p2 |
|||
end |
end |
||
true # could also set to `0` value to check for |
true # could also set to `0` value to check for |