Example #1
0
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) ])

Example #2
0
#!/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.
Example #3
0
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))






Example #4
0
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



Example #5
0
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
Example #6
0
import Prime
from time import time

s = time()
print sum(Prime.prime_seive(2000000))

print time() - s

Example #7
0
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]
Example #8
0
      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
Example #9
0
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


Example #10
0
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




Example #11
0
        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 :
Example #12
0
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