Files
  • main.py
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import time
 
def is_prime(number):
    i = 3
    while i**2 <= number:
        if number % i == 0:
            return False
        i += 2
    return True
 
def lucas_lehmer(p):
    s = 4
    M = 2**p - 1
 
    for _ in range(p - 2):
        s = ((s * s) - 2) % M
    return s == 0
 
def mersenne_primes():
    p = 3
    while True:
        if is_prime(p) and lucas_lehmer(p):
            yield (p, 2**p - 1)
        p += 2
 
start = time.time()
numbers = mersenne_primes()
 
for _ in range(17):
    p, mersenne = next(numbers)
    perfect = 2**(p-1) * mersenne
    print(perfect)
 
print('Executado em ' + str(time.time() - start) + 's')