def quadratic_primes(number): prime = c.prime_list_generator(number, False) max_len = 0 for a in range(3, prime[-1], 2): for b in prime: max_len = max_quad_prime_series(max_len, a, b) max_len = max_quad_prime_series(max_len, a, -b) max_len = max_quad_prime_series(max_len, -a, b) max_len = max_quad_prime_series(max_len, -a, -b)
def consequtive_prime_sum(max=100): import sys sys.path.append('../') import common as c primes_bool = c.prime_list_generator( max) # [False, False, True, True, False, ...] primes = c.prime_list_generator(max, False) # [2, 3, 5, 7, 11, ...] start, len_max, max_sum = 0, 0, 0 # where the results are stored for i in range(len(primes)): sum = primes[i] # initialize sum for j in range(i + 1, len(primes)): sum += primes[j] if (sum < max): # if sum is out of range, skip the larger primes if (primes_bool[sum]): # if 2nd conditional also met... l = j - i + 1 # calculate length of the series if (l > len_max): len_max, start, max_sum = l, primes[i], sum else: break print("start = ", start, " :: ", "max = ", len_max, " :: ", "sum = ", max_sum)
def truncatable_primes(max, start=23): import sys sys.path.append('../') import common as c primes = c.prime_list_generator(max) sum, my_list = 0, [] for i in range(start, max): if primes[i]: # initialize left with the number, right with 0, and multiplier of 1 (left, right, mul, ok) = (i, 0, 1, True) while (ok and left > 0): right += (left % 10) * mul # grow the right number ok = primes[right] and primes[left] # check for primeness for early exit mul *= 10 # increase multiplier left = int(left / 10) # shrink the left number if ok: # is it a truncatable prime? sum += i my_list.append(i) print("sum = ", sum, "len = ", len(my_list), my_list)
def prime_permutations(digits=4): import sys sys.path.append('../') import common as c max = 10**digits primes_bool = c.prime_list_generator(max) primes = [ x for x in range((10**(digits - 1) - 1), 10**digits) if primes_bool[x] ] for i in range(len(primes)): for j in range(i + 1, len(primes)): next_j = 2 * primes[j] - primes[ i] # C = B + diff ; where diff = B - A if (next_j > max): break if (primes_bool[next_j]): # check for condition #3, (and 2) i_list = sorted(str(primes[i])) j_list = sorted(str(primes[j])) n_list = sorted(str(next_j)) if ((i_list == j_list) and (j_list == n_list)): # condition #1 print("diff = ", "{:7d}".format(primes[j] - primes[i]), " :: ", primes[i], primes[j], next_j)
''' The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find the sum of all prime numbers below 2,000,000 ''' import time # get a sense of the time taken t = time.time() # get time just before the main routine ########## the main routine ############# import sys sys.path.append('../') import common as c number = 2000000 print("sum of primes = ", sum(c.prime_list_generator(number, False))) ########## end of main routine ########### t = time.time() - t # and now, after the routine print("time = {:7.5f} s\t{:7.5f} ms\t{:7.3f} µs".format( t, t * 1000, t * 1000000))