def problem60(): """Problem 60 - Prime pair sets""" sieve.extend( PRIME_LIMIT) # find_prime_concatenates requires non-empty sieve solutions = [] find_prime_concatenates([], 5, PRIME_LIMIT, solutions) return min(sum(s) for s in solutions)
def test_generate(): from sympy.ntheory.generate import sieve sieve._reset() assert nextprime(-4) == 2 assert nextprime(2) == 3 assert nextprime(5) == 7 assert nextprime(12) == 13 assert prevprime(3) == 2 assert prevprime(7) == 5 assert prevprime(13) == 11 assert prevprime(19) == 17 assert prevprime(20) == 19 sieve.extend_to_no(9) assert sieve._list[-1] == 23 assert sieve._list[-1] < 31 assert 31 in sieve assert nextprime(90) == 97 assert nextprime(10**40) == (10**40 + 121) assert prevprime(97) == 89 assert prevprime(10**40) == (10**40 - 17) assert list(sieve.primerange(10, 1)) == [] assert list(primerange(10, 1)) == [] assert list(primerange(2, 7)) == [2, 3, 5] assert list(primerange(2, 10)) == [2, 3, 5, 7] assert list(primerange(1050, 1100)) == [1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097] s = Sieve() for i in range(30, 2350, 376): for j in range(2, 5096, 1139): A = list(s.primerange(i, i + j)) B = list(primerange(i, i + j)) assert A == B s = Sieve() assert s[10] == 29 assert nextprime(2, 2) == 5 raises(ValueError, lambda: totient(0)) raises(ValueError, lambda: reduced_totient(0)) raises(ValueError, lambda: primorial(0)) assert mr(1, [2]) is False func = lambda i: (i**2 + 1) % 51 assert next(cycle_length(func, 4)) == (6, 2) assert list(cycle_length(func, 4, values=True)) == \ [17, 35, 2, 5, 26, 14, 44, 50, 2, 5, 26, 14] assert next(cycle_length(func, 4, nmax=5)) == (5, None) assert list(cycle_length(func, 4, nmax=5, values=True)) == \ [17, 35, 2, 5, 26] sieve.extend(3000) assert nextprime(2968) == 2969 assert prevprime(2930) == 2927 raises(ValueError, lambda: prevprime(1))
def test_prime(): assert prime(1) == 2 assert prime(2) == 3 assert prime(5) == 11 assert prime(11) == 31 assert prime(57) == 269 assert prime(296) == 1949 assert prime(559) == 4051 assert prime(3000) == 27449 assert prime(4096) == 38873 assert prime(9096) == 94321 assert prime(25023) == 287341 raises(ValueError, lambda: prime(0)) sieve.extend(3000) assert prime(401) == 2749
def test_prime(): assert prime(1) == 2 assert prime(2) == 3 assert prime(5) == 11 assert prime(11) == 31 assert prime(57) == 269 assert prime(296) == 1949 assert prime(559) == 4051 assert prime(3000) == 27449 assert prime(4096) == 38873 assert prime(9096) == 94321 assert prime(25023) == 287341 raises(ValueError, lambda: prime(0)) sieve.extend(3000) assert prime(401) == 2749
def problem12(nr_divisors): """Problem 12 - Highly divisible triangular number""" sieve.extend(MAX_PRIME) x = 1 while True: nr = number_of_devisors(x) if x % 2 == 0: # even nr = number_of_devisors(x // 2) * number_of_devisors(x + 1) else: # uneven nr = number_of_devisors(x) * number_of_devisors((x + 1) // 2) if nr >= nr_divisors: break x += 1 return x * (x + 1) // 2
def test_compositepi(): assert compositepi(1) == 0 assert compositepi(2) == 0 assert compositepi(5) == 1 assert compositepi(11) == 5 assert compositepi(57) == 40 assert compositepi(296) == 233 assert compositepi(559) == 456 assert compositepi(3000) == 2569 assert compositepi(4096) == 3531 assert compositepi(9096) == 7967 assert compositepi(25023) == 22259 assert compositepi(10**8) == 94238544 assert compositepi(253425253) == 239568856 assert compositepi(8769575643) == 8368111320 sieve.extend(3000) assert compositepi(2321) == 1976
def test_primepi(): assert primepi(1) == 0 assert primepi(2) == 1 assert primepi(5) == 3 assert primepi(11) == 5 assert primepi(57) == 16 assert primepi(296) == 62 assert primepi(559) == 102 assert primepi(3000) == 430 assert primepi(4096) == 564 assert primepi(9096) == 1128 assert primepi(25023) == 2763 assert primepi(10**8) == 5761455 assert primepi(253425253) == 13856396 assert primepi(8769575643) == 401464322 sieve.extend(3000) assert primepi(2000) == 303
def test_primepi(): assert primepi(1) == 0 assert primepi(2) == 1 assert primepi(5) == 3 assert primepi(11) == 5 assert primepi(57) == 16 assert primepi(296) == 62 assert primepi(559) == 102 assert primepi(3000) == 430 assert primepi(4096) == 564 assert primepi(9096) == 1128 assert primepi(25023) == 2763 assert primepi(10**8) == 5761455 assert primepi(253425253) == 13856396 assert primepi(8769575643) == 401464322 sieve.extend(3000) assert primepi(2000) == 303
def test_compositepi(): assert compositepi(1) == 0 assert compositepi(2) == 0 assert compositepi(5) == 1 assert compositepi(11) == 5 assert compositepi(57) == 40 assert compositepi(296) == 233 assert compositepi(559) == 456 assert compositepi(3000) == 2569 assert compositepi(4096) == 3531 assert compositepi(9096) == 7967 assert compositepi(25023) == 22259 assert compositepi(10**8) == 94238544 assert compositepi(253425253) == 239568856 assert compositepi(8769575643) == 8368111320 sieve.extend(3000) assert compositepi(2321) == 1976
def test_prime(): assert prime(1) == 2 assert prime(2) == 3 assert prime(5) == 11 assert prime(11) == 31 assert prime(57) == 269 assert prime(296) == 1949 assert prime(559) == 4051 assert prime(3000) == 27449 assert prime(4096) == 38873 assert prime(9096) == 94321 assert prime(25023) == 287341 assert prime(10000000) == 179424673 # issue #20951 assert prime(99999999) == 2038074739 raises(ValueError, lambda: prime(0)) sieve.extend(3000) assert prime(401) == 2749 raises(ValueError, lambda: prime(-1))
def test_composite(): from sympy.ntheory.generate import sieve sieve._reset() assert composite(1) == 4 assert composite(2) == 6 assert composite(5) == 10 assert composite(11) == 20 assert composite(41) == 58 assert composite(57) == 80 assert composite(296) == 370 assert composite(559) == 684 assert composite(3000) == 3488 assert composite(4096) == 4736 assert composite(9096) == 10368 assert composite(25023) == 28088 sieve.extend(3000) assert composite(1957) == 2300 assert composite(2568) == 2998 raises(ValueError, lambda: composite(0))
def test_composite(): from sympy.ntheory.generate import sieve sieve._reset() assert composite(1) == 4 assert composite(2) == 6 assert composite(5) == 10 assert composite(11) == 20 assert composite(41) == 58 assert composite(57) == 80 assert composite(296) == 370 assert composite(559) == 684 assert composite(3000) == 3488 assert composite(4096) == 4736 assert composite(9096) == 10368 assert composite(25023) == 28088 sieve.extend(3000) assert composite(1957) == 2300 assert composite(2568) == 2998 raises(ValueError, lambda: composite(0))
def main(): n = 1000000 output = 0 sieve.extend(1000000) for i in range(2, n + 1): for j in range(1, i): if (i in sieve or j in sieve): output += 1 elif gcd(i, j) == 1: output += 1 print(i) print("output: " + str(output)) # output = n - 1 # all numbers have 1/n apart from 1 # primes = 1 # primes less than 3 # for i in range(3,n + 1): # if isprime(i): # if i is prime we add i - 2 to the output as we've already counted 1/i and don't count i/i # primes += 1 # there's one more prime < i # output += i - 2 # see above # else: # number is not prime # output += primes - len(primefactors(i)) # print(i) print("Count: " + str(output))
def test_primepi(): assert primepi(-1) == 0 assert primepi(1) == 0 assert primepi(2) == 1 assert primepi(Rational(7, 2)) == 2 assert primepi(3.5) == 2 assert primepi(5) == 3 assert primepi(11) == 5 assert primepi(57) == 16 assert primepi(296) == 62 assert primepi(559) == 102 assert primepi(3000) == 430 assert primepi(4096) == 564 assert primepi(9096) == 1128 assert primepi(25023) == 2763 assert primepi(10**8) == 5761455 assert primepi(253425253) == 13856396 assert primepi(8769575643) == 401464322 sieve.extend(3000) assert primepi(2000) == 303 n = Symbol('n') assert primepi(n).subs(n, 2) == 1 r = Symbol('r', real=True) assert primepi(r).subs(r, 2) == 1 assert primepi(S.Infinity) is S.Infinity assert primepi(S.NegativeInfinity) == 0 assert limit(primepi(n), n, 100) == 25 raises(ValueError, lambda: primepi(I)) raises(ValueError, lambda: primepi(1 + I)) raises(ValueError, lambda: primepi(zoo)) raises(ValueError, lambda: primepi(nan))
from sympy import sieve, isprime from numpy import sqrt sieve.extend(5) current = 9 conjecture = True while conjecture: while isprime(current): current += 2 sieve.extend(current) isGood = False for i in sieve._list: if sqrt((current - i) / 2) % 1 == 0: isGood = True break if not isGood: print(current) conjecture = False current += 2 print("Done") # Answer: 5777
def test_generate(): from sympy.ntheory.generate import sieve sieve._reset() assert nextprime(-4) == 2 assert nextprime(2) == 3 assert nextprime(5) == 7 assert nextprime(12) == 13 assert prevprime(3) == 2 assert prevprime(7) == 5 assert prevprime(13) == 11 assert prevprime(19) == 17 assert prevprime(20) == 19 sieve.extend_to_no(9) assert sieve._list[-1] == 23 assert sieve._list[-1] < 31 assert 31 in sieve assert nextprime(90) == 97 assert nextprime(10**40) == (10**40 + 121) assert prevprime(97) == 89 assert prevprime(10**40) == (10**40 - 17) assert list(sieve.primerange(10, 1)) == [] assert list(sieve.primerange(5, 9)) == [5, 7] sieve._reset(prime=True) assert list(sieve.primerange(2, 12)) == [2, 3, 5, 7, 11] assert list(sieve.totientrange(5, 15)) == [4, 2, 6, 4, 6, 4, 10, 4, 12, 6] sieve._reset(totient=True) assert list(sieve.totientrange(3, 13)) == [2, 2, 4, 2, 6, 4, 6, 4, 10, 4] assert list(sieve.totientrange(900, 1000)) == [totient(x) for x in range(900, 1000)] assert list(sieve.totientrange(0, 1)) == [] assert list(sieve.totientrange(1, 2)) == [1] assert list(sieve.mobiusrange(5, 15)) == [-1, 1, -1, 0, 0, 1, -1, 0, -1, 1] sieve._reset(mobius=True) assert list(sieve.mobiusrange(3, 13)) == [-1, 0, -1, 1, -1, 0, 0, 1, -1, 0] assert list(sieve.mobiusrange(1050, 1100)) == [mobius(x) for x in range(1050, 1100)] assert list(sieve.mobiusrange(0, 1)) == [] assert list(sieve.mobiusrange(1, 2)) == [1] assert list(primerange(10, 1)) == [] assert list(primerange(2, 7)) == [2, 3, 5] assert list(primerange(2, 10)) == [2, 3, 5, 7] assert list(primerange(1050, 1100)) == [1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097] s = Sieve() for i in range(30, 2350, 376): for j in range(2, 5096, 1139): A = list(s.primerange(i, i + j)) B = list(primerange(i, i + j)) assert A == B s = Sieve() assert s[10] == 29 assert nextprime(2, 2) == 5 raises(ValueError, lambda: totient(0)) raises(ValueError, lambda: reduced_totient(0)) raises(ValueError, lambda: primorial(0)) assert mr(1, [2]) is False func = lambda i: (i**2 + 1) % 51 assert next(cycle_length(func, 4)) == (6, 2) assert list(cycle_length(func, 4, values=True)) == \ [17, 35, 2, 5, 26, 14, 44, 50, 2, 5, 26, 14] assert next(cycle_length(func, 4, nmax=5)) == (5, None) assert list(cycle_length(func, 4, nmax=5, values=True)) == \ [17, 35, 2, 5, 26] sieve.extend(3000) assert nextprime(2968) == 2969 assert prevprime(2930) == 2927 raises(ValueError, lambda: prevprime(1))
sqrtlim = int(sqrt(lim)) gen = set() S = 1 def nextgen(): global gen,S #eprint(gen) newgen = set() S += len(gen) for n in gen: for p in sieve.primerange(1,min(sqrtlim,lim//n+1)): newgen.add(p*n) del gen gen = newgen if __name__=="__main__": tic() sieve.extend(sqrtlim) for p1 in sieve.primerange(1,sqrtlim): for p2 in sieve.primerange(p1,min(sqrtlim,lim//p1+1)): if p1*p2 > lim: break for p3 in sieve.primerange(p2,min(sqrtlim,lim//(p1*p2)+1,p1*p2+1)): gen.add(p1*p2*p3) while len(gen)>0: nextgen() print(S) toc() exit()
import math import itertools from sympy import sieve length = 100000 sieve.extend(length) divisors = [0]*length divisors[1] = [1] divisors[2] = [1,2] def get_two_factors(n): i = 2 while((n%i)!=0): i+=1 return (n/i, i) for i in range(3,length): if i in sieve: divisors[i] = [1,i] else: a,b = get_two_factors(i) divisors[i] = list(set([x * y for (x, y) in itertools.product(divisors[a], divisors[b])])) for i in range(1,length): small = i if i%2!=0 else i/2 big = i+1 if (i+1)%2!=0 else (i+1)/2 total = len(divisors[small]) * len(divisors[big]) if (total)>500: print small,big,total break
from sympy import sieve # library for primes def get_pfct(n): i = 2; factors = [] while i * i <= n: if n % i: i += 1 else: n //= i factors.append(i) if n > 1: factors.append(n) return len(factors) sieve.extend(110) # first 110 primes... primes = sieve._list pool = [] for each in range(0, 121): pool.append(get_pfct(each)) for i, each in enumerate(pool): if each in primes: print(i, end=',')
ezpz """ from Euler.tictoc import * from sympy import sieve from Euler.digits import intToDigits, digitsToInt def rotations(n): dig = intToDigits(n) for i in range(1, len(dig)): yield digitsToInt(dig[i:] + dig[:i]) if __name__ == "__main__": tic() sieve.extend(1e6) primes = {p for p in sieve._list if p < 1e6} found = set() for p in primes: if p in found: continue rot = rotations(p) if all(map(lambda r: r in primes, rot)): found.add(p) for r in rot: found.add(r) print(len(found)) toc() exit()
def primeRange2(numRange): sieve.extend(numRange) print("\nHere are the prime numbers up to the number you entered: ", sieve._list) print("\nThere are", len(sieve._list), "prime numbers up to", numRange)
#NumberTh functions with SymPy package #------------------------------------- from sympy import ntheory from sympy import sieve from sympy import generate sieve._reset( ) # An infinite list of prime numbers, implemented as a dynamically growing sieve of Eratosthenes.#When a lookup is # requested involving an odd number that has not been sieved,the sieve is automatically extended up to that number. print(13 in sieve) # prints 'True' if the input is prime, sieve.extend(40) #for input n grows the sieve to contain all primes <= n print(sieve[10]) # returns n th prime sieve.extend_to_no(15) # extends upto n th prime # mobiusrange(a,b) genarates Mobius numbers for the range [a,b), means output will be a list. Mob_func = sieve.mobiusrange(7, 12) print('\n Mobius function outputs in the given range:', [i for i in Mob_func]) # primerange(a,b) generates all prime numbers in the range [a,b) Prime_list = sieve.primerange(1, 5) print('\n Primes in the given range are :', [i for i in Prime_list]) #search(n) return the indices i, j of the primes that bound n. If n is prime then i == j. Although n can be an expression, # if ceiling cannot convert it to an integer then an error will be raised. x, y = sieve.search(25) print('\n The given input is in between ', '(', x, ',', y, ')', 'th Primes \n')
from PermuteString import PermuteString from sympy import sieve import itertools sieve.extend(1000000) primes = sieve._list stringprimes=[] for prime in primes: stringprimes.append(str(prime)) count = 0 primeset = set(stringprimes) excluded_digits = set(['0','2','4','5','6','8']) for p in stringprimes: if not excluded_digits.isdisjoint(set(p)): continue perm = PermuteString(p) if set(perm) <= primeset: count += 1 print p count += 2 print count
from sympy import sieve sieve.extend(2000000) maxcount = 0 amax = 0 bmax = 0 for b in sieve.primerange(0,1000): for a in xrange(-2*(b/2)-1, 1000, 2): term = lambda n: n**2 + a*n + b i = 0 count = 0 while sieve.__contains__(term(i)): i += 1 count += 1 if count > maxcount: maxcount = count amax = a bmax = b print maxcount print amax, bmax
from sympy import isprime, divisors, sieve sieve.extend(100000000) def cond(n): if not isprime(int(2 + n/2)): return False else: d = divisors(n) for i in range(2,int(len(d)/2)): if not isprime(d[i] + int(n/d[i])): return False return True U = [i-1 for i in sieve.primerange(1,100000000) if (i-1) % 4 != 0] print(sum([n for n in U if cond(n)]))