Beispiel #1
0
def m_search(n,k,m=1,phi=1,lowerInd=0):
 global primes,mask,pcap
 s = 0
 if k == 0:
   M = m*phi-phi+m
   bnd = int(M**.25)
   pi = bisect_right(primes,n/m)
   if n/m > pcap:
    f = shanks_factorize(M,primes[:15])
    for d in divisors([[bas,f[bas]] for bas in f]):
     q,r = divmod(d-phi,m-phi)
     if r == 0 and q > primes[lowerInd] and q*m <= n and is_prime(q,pcap-1,mask):
       if (q*m-1) % (q*m - (q-1)*phi) == 0:
        s += q*m
   else:
    for q in primes[lowerInd+1:pi+1]:
     if q*m <= n and (q*m-1) % (q*m - (q-1)*phi) == 0:
      s+= q*m
#        print q*m,q,m
   return s
 bound = int((n/m)**(1./(k+1)))
 i=lowerInd+1
 for i,p in enumerate(primes[lowerInd+1:],lowerInd+1):
   if p > bound:
    break
   else:
    s += m_search(n,k-1,m*p,phi*(p-1),i)
  
 return s   
Beispiel #2
0
def find_pairs(n):
  global primes,mask
  s = 0
  pairs = {}
  for p in primes[1:]:
   num = p**2-p+1
   f = shanks_factorize(num,primes[:15])
   for k in divisors([[bas,f[bas]] for bas in f] ):
    q = num/k - p + 1
    if q > 0 and q > p and q*p <= n and is_prime(q,pcap-1,mask):
      s += p*q
#      print p,q
      if p not in pairs:
       pairs[p] = [q]
      else:
       pairs[p].append(q)
  print "Sum over semi-primes %d" % s  
  #now do backtracking pair-combos
  for p1 in pairs:
   for p2 in pairs[p1]:
    s += cores_backtrack(n/p1/p2,pairs,[p1,p2])
  return s
Beispiel #3
0
def p_sum(d):
  s = 0
  for i in xrange(3):
    s += pe.is_prime(d[i],cap,mask)
  return s
Beispiel #4
0
pcap = 2*10**5
n = 10**9
mask = pe.mark_primes(pcap)
cache = []
pDivs = {}
i = 1
e1 = 0
while i < cap:
  j = 1
  e2 = 0
  cache.append([])
  while j*i < cap:
    t = j*i
    cache[e1].append(t)
    for k in xrange(t,cap,t):
      if pe.is_prime(k+1,pcap,mask):
        if k+1 not in pDivs:
          pDivs[k+1] = [t]
        else:
          pDivs[k+1].append(t)
      
    j *= 5
    e2 += 1
  
  i *= 2
  e1 += 1

s = 0
num_found = 0
m = 40