Post by tommy on Dec 12, 2018 18:02:55 GMT
I edited some code so that all you do is enter a number to see if it returns a Mersenne prime. If you have a super fast computer let me know about your findings. On my computer it finds 44497 in 25 seconds using a dell 15 3000 Inspiron laptop. You can download the zip as attachment to run it from your cmd prompt or run this code in Python 2.7. Let me know about your performance in seconds for numbers larger than 44497. The code just found 216091 in 25 minutes.
The program does not return even number or non-mersenne prime numbers. 2 does not work!
Mersenne Determinate Tom ONeil.py (3.11 KB)
#while true:
#import numpy as np
from decimal import *
#assert s[-12:] == 2**num-1
import time
#from sys import stdout # stdout to flush ROM
def myfunction():
# print 'Hello World'
# to calll function
myfunction()
#startst = time.time()
#num = int(input('Enter a number to test: '))
#x = int(input('Enter a number to test: '))
#for num in xrange(num,1,1):
from itertools import count
def prime_sieve(): # postponed sieve, by Will Ness
yield 2; yield 3; yield 5; yield 7; # original code David Eppstein,
sieve = {} # Alex Martelli, ActiveState Recipe 2002
ps = prime_sieve() # a separate base Primes Supply:
p = next(ps) # (3) a Prime to add to dict
q = p*p
def count():# (9) its sQuare
for c in count(9,2): # the Candidate
if c in sieve: # c’s a multiple of some base prime
s = sieve.pop(c) # i.e. a composite ; or
elif c < q:
yield c # a prime
continue
else: (c==q); # or the next base prime’s square:
s=count(q+2*p,2*p) # (9+6, by 6 : 15,21,27,33,...)
p=next(ps) # (5)
q=p*p # (25)
for m in s: # the next multiple
if m not in sieve: # no duplicates
break
sieve[m] = s # original test entry: ideone.com/WFv4f
def mod_mersenne(n, prime, mersenne_prime):
while n > mersenne_prime:
n = (n & mersenne_prime) + (n >> prime)
if n == mersenne_prime:
return 0
return n
def is_mersenne_prime(prime, mersenne_prime):
s = 4
for i in range(prime - 2):
#print "in function IMP"
s = mod_mersenne(((s*s - 2)), prime, mersenne_prime)
return s == 0
def calculate_perfects(n):
# yield(n)
primes = prime_sieve()
next(primes) #2 is barely even a prime
# for prime in primes:
if is_mersenne_prime(n,2**n-1):
yield((2**n-1))
"""
if __name__ == '__main__':
for perfect in calculate_perfects():
print (perfect)
"""
#edited by Tom E. O'Neil to find Mprimes
#print 'Goodbye'
print ("Mersenne Determinate Program Tom O'Neil, The Program only prints Mersenne Primes and it filters non-mersenne primes and even numbers. The number 2 returns nothing!")
def runpro():
keep_running = True
num = int(input('Enter a number to test: '))
while keep_running:
start = time.time()
for perfect in calculate_perfects(num):
print (perfect)
elapsed = time.time() - start
print "\tfound in %.f seconds" % elapsed
start = time.time()
num = int(input('Enter a number to test: '))
if num == 0:
keep_running = False
runpro()
The program does not return even number or non-mersenne prime numbers. 2 does not work!
Mersenne Determinate Tom ONeil.py (3.11 KB)
insert code here
#import mpmath#while true:
#import numpy as np
from decimal import *
#assert s[-12:] == 2**num-1
import time
#from sys import stdout # stdout to flush ROM
def myfunction():
# print 'Hello World'
# to calll function
myfunction()
#startst = time.time()
#num = int(input('Enter a number to test: '))
#x = int(input('Enter a number to test: '))
#for num in xrange(num,1,1):
from itertools import count
def prime_sieve(): # postponed sieve, by Will Ness
yield 2; yield 3; yield 5; yield 7; # original code David Eppstein,
sieve = {} # Alex Martelli, ActiveState Recipe 2002
ps = prime_sieve() # a separate base Primes Supply:
p = next(ps) # (3) a Prime to add to dict
q = p*p
def count():# (9) its sQuare
for c in count(9,2): # the Candidate
if c in sieve: # c’s a multiple of some base prime
s = sieve.pop(c) # i.e. a composite ; or
elif c < q:
yield c # a prime
continue
else: (c==q); # or the next base prime’s square:
s=count(q+2*p,2*p) # (9+6, by 6 : 15,21,27,33,...)
p=next(ps) # (5)
q=p*p # (25)
for m in s: # the next multiple
if m not in sieve: # no duplicates
break
sieve[m] = s # original test entry: ideone.com/WFv4f
def mod_mersenne(n, prime, mersenne_prime):
while n > mersenne_prime:
n = (n & mersenne_prime) + (n >> prime)
if n == mersenne_prime:
return 0
return n
def is_mersenne_prime(prime, mersenne_prime):
s = 4
for i in range(prime - 2):
#print "in function IMP"
s = mod_mersenne(((s*s - 2)), prime, mersenne_prime)
return s == 0
def calculate_perfects(n):
# yield(n)
primes = prime_sieve()
next(primes) #2 is barely even a prime
# for prime in primes:
if is_mersenne_prime(n,2**n-1):
yield((2**n-1))
"""
if __name__ == '__main__':
for perfect in calculate_perfects():
print (perfect)
"""
#edited by Tom E. O'Neil to find Mprimes
#print 'Goodbye'
print ("Mersenne Determinate Program Tom O'Neil, The Program only prints Mersenne Primes and it filters non-mersenne primes and even numbers. The number 2 returns nothing!")
def runpro():
keep_running = True
num = int(input('Enter a number to test: '))
while keep_running:
start = time.time()
for perfect in calculate_perfects(num):
print (perfect)
elapsed = time.time() - start
print "\tfound in %.f seconds" % elapsed
start = time.time()
num = int(input('Enter a number to test: '))
if num == 0:
keep_running = False
runpro()