Calculating the largest known prime in Ruby
jpcamara.com
jpcamara.com
```python
import sys sys.set_int_max_str_digits(0) # Allows for printing very large numbers.
x = (2 * 136_279_841) - 1
print(x)
```
import sys
sys.set_int_max_str_digits(0) # Allows for printing very large numbers
x = (2 ** 136_279_841) - 1
print(x)
Also, note that 1 << 136_279_841 is much faster than 2 ** 136_279_841; the former runs in <10ms, while the latter takes over 600ms on my machine (a 60x difference).If you think about the meaning of place value in binary, this is exactly the same as raising two to a specified power. Each time you shift one place further left in binary, it's equivalent to multiplying the existing number by two. So repeating that a specified number of times is multiplying by a specified power of two.
shifted left once, it becomes 2 to the power 1 ... 0b0010
shifted left twice, it becomes 2 to the power 2 ... 0b0100
shifted left three times, it becomes 2 to the power 3 ... 0b1000
etc until
shifted left 136_279_841 times, it becomes 2 to the power 136_279_84 ... 0b1000...many zeros...0000
subtract 1, it becomes
0b0111...many ones...1111
The smallest Mersenne prime, three, is binary 11, while the next largest is seven (111), then 31 (11111), then 127 (1111111). The next candidate, 2047 (11111111111), is not prime.