import Tools import Prime n = 10**7 Prime.prime_seive(n) print min( [ (n/float(t),n,t) for n,t in Prime.totient(n) if Tools.is_perm(n,t) ])
#!/usr/bin/python2 import Prime import math def corners(max_n): for n in xrange(1,max_n+1): odd = 2*n+1 d = 2*n for i in xrange(odd**2 - 3*d, odd**2+1, d): yield i n = 13500 Prime.prime_seive((2*n+1)**2) iprime = 0 n_primes = 0. total = 0. for c in corners(n): for i in xrange(iprime,Prime.n_primes): if Prime.primes[i] == c: n_primes += 1. break elif Prime.primes[i] > c: break iprime = i #pf = Prime.primeFactors(c) #if Prime.primeFactors(c).isPrime(): #n_primes += 1. total += 1.
import Prime from collections import deque primeset = set(Prime.prime_seive(1000000)) circulars = set() for p in primeset: strp = deque(str(p)) cycles = set() isCircular = True for i in range(len(strp)): strp.rotate(1) i = int(''.join(map(str, strp))) if i in primeset: cycles.add(i) else: isCircular = False if isCircular: circulars = circulars | cycles print (circulars, len(circulars))
import Prime as p primeset = set(p.prime_seive(9999)) def is_permutation(one,two): return sorted(str(one)) == sorted(str(two)) for i in range(p.n_primes): if p.primes[i] < 1000 : continue for j in range(i+1,p.n_primes): if p.primes[j] < 1000 : continue if not is_permutation(p.primes[i], p.primes[j]): continue third = 2*p.primes[j] - p.primes[i] if third in primeset and is_permutation(p.primes[j],third): print p.primes[i], p.primes[j],third
import Prime primeset = set(Prime.prime_seive(999999)) total = 0 for p in primeset: #left pstr = str(p) if len(pstr) == 1 : continue truncatable = True for i in range(1,len(pstr)): if not int(pstr[-i:]) in primeset : truncatable = False if not int(pstr[:i]) in primeset : truncatable = False if truncatable: print p total += p print total
import Prime from time import time s = time() print sum(Prime.prime_seive(2000000)) print time() - s
import Prime def quad_prime(a,b,prime_set): n = 0 x = n**2 + a*n + b while x in prime_set: x = n**2 + a*n + b yield x n+=1 Prime.prime_seive(100000) prime_set = set(Prime.primes) maximum = (0, 0, 0) for b in Prime.primes: length = 0 if b > 1000: break for a in xrange( 1-b, 1000 ): l = len([p for p in quad_prime(a,b,prime_set) ] ) maximum = max(maximum,(l,a,b)) print maximum, maximum[1]*maximum[2]
for b in np.arange(1,10, dtype = float): if a == b : continue if (i*10+a)/(i*10+b) == a/b and (i*10+a)/(i*10+b) < 1: print (i*10+a),'/',(i*10+b) numerators.append(i*10+a) denominators.append(i*10+b) if (i+a*10)/(i*10+b) == a/b and (i+a*10)/(i*10+b) < 1: print (i+a*10),'/',(i*10+b) numerators.append(i+a*10) denominators.append(i*10+b) if (i+a*10)/(i+b*10) == a/b and (i+a*10)/(i+b*10) < 1: print (i+a*10),'/',(i+b*10) numerators.append(i+a*10) denominators.append(i+b*10) if (i*10+a)/(i+b*10) == a/b and (i*10+a)/(i+b*10) < 1: print (i*10+a),'/',(i+b*10) numerators.append(i*10+a) denominators.append(i+b*10) top = int(np.prod(numerators)) bot = int(np.prod(denominators)) Prime.prime_seive(max(top,bot)) pt = Prime.primeFactors(top) pb = Prime.primeFactors(bot) gcd = pt.GCD(pb).getValue() print top,bot,gcd print top/gcd, bot/gcd
import Prime n = 1000000 primeset = set(Prime.prime_seive(n)) total = 0 for max_n,p in enumerate(Prime.primes): total += p if total > n: break l = max_n lb = 5 while l > lb: for i in range(Prime.n_primes - l + 1): s = sum(Prime.primes[i:i+l]) if s > n : break if sum(Prime.primes[i:i+l]) in primeset: print l,Prime.primes[i:i+l],sum(Prime.primes[i:i+l]) l = lb break l -= 1
import Prime from itertools import permutations max_prime = 10000000 ps = set(Prime.prime_seive(max_prime)) done = False for p in Prime.primes: pstr = str(p) for d in set(pstr): family = [] for i in "0123456789": f = int(pstr.replace(d,i)) if not len(str(f)) == len(pstr): continue if f in ps: family.append(f) if len(family) == 8: done = True print family break if done : break
res = a*1000000 + b elif b > 10000: res = a*100000 + b elif b > 1000: res = a*10000 + b elif b > 100: res = a*1000 + b elif b > 10: res = a*100 + b else: res = a*10 + b return res max_n = 99999999 Prime.prime_seive(max_n) prime_set = set(Prime.primes) pairs = {} print "Making pairs" ttotal = 0 for i in xrange(Prime.n_primes): p1 = Prime.primes[i] for j in xrange(i+1, Prime.n_primes): ttotal += 1 p2 = Prime.primes[j] #if Prime.isPrime(cat_ints(p1,p2)) and Prime.isPrime(cat_ints(p2,p1)): new_p1 = cat_ints(p1,p2) if new_p1 in prime_set: new_p2 = cat_ints(p2,p1) if new_p2 in prime_set :
import Prime from Tools import pandigitals max_pan = 0 # Note: for n=8,9 all pandigitals are divisible by 9 primeset = set(Prime.prime_seive(int(1e7))) for i in [7,6,5,4,3,2,1]: for p in pandigitals(i): if p in primeset: max_pan = max(p,max_pan) if max_pan: print max_pan break