def fromright(i): i /= 10 while i: if not tools.isprime(i): return False i /= 10 return True
def fromleft(i): d = 10**int(math.log(i,10)) i %= d while True: if not tools.isprime(i): return False if i < 10: break d /= 10 i %= d return True
def totient_(n): if tools.isprime(n): return n-1 (f, c) = tools.primefactorization(primes, n, 1000000) p = n for f1 in f: p *= (f1-1.0)/f1 p = int(p) return p
def combines(a): ret = True for i in a: for j in a: if i == j: continue if not tools.isprime(i*10**(len(str(j)))+j): ret = False break if not ret: break return ret
def totient_(n): if tools.isprime(n): return n-1 (f, c) = tools.primefactorization(primes, n, 1000000) fc = 0 for i in range(len(f)): fc += f[i]*c[i] # print "fc:", fc, len(f), f, c p = n for f1 in f: p /= f1 p *= f1-1 return p
return sumofdivisors-input tools.genprimes(primes, 1000000) print sumofproperdivisors(589786) print tools.primefactorization(primes, 589786, 1000000) longestchain = 0 minmember = 0 ignore = set() print 'start' for i in range(4, 1000000): if not i%200: print "i:", i, len(ignore), longestchain, minmember if tools.isprime(i): continue if i in ignore: continue pdsum = sumofproperdivisors(i) chainstart = i chainlen = 2 chain = set() curchain = [] curchain.append(chainstart) while True: if pdsum <= i: chainlen = 0 break
for m in range(2, 867): for n in range(1, m): if m%2 == n%2: continue if tools.gcd(m, n) == 1: p += 1 x = 2*m*(m+n) if x in ps: ds.add(x) ps.add(x) while i <= limit: j = i/2 if tools.isprime(j): i += 2 continue (f, c) = tools.primefactorization(primes, j, 1000000) if len(f) < 2: i += 2 continue if f[0] == 2: c[0] += 1 else: f.append(2) c.append(1) # P = z * 2 * m * (m + n)
from tools import isprime s = 0 for i in range(2000000): if isprime(i): s += i print(s)
if z == 0: z = l else: z += l*(10**len(str(z))) return z used = set() for p in primes: if p >= 1000000: continue if p in used: continue curchain = [] z = p for i in range(0, len(str(p))): curchain.append(z) z = rotate(z) if z == p: break if not tools.isprime(z): break if z == p: for x in curchain: used.add(x) print len(used) print used
tools.genprimes(primes, 1000000) maxsum = 0 maxlen = 0 for i in range(len(primes)): if primes[i] >= 1000000: break cursum = 0 curlen = 0 j = i cursum = 0 while True: cursum += primes[j] if cursum >= 1000000: break if not cursum % 2: j += 1 continue if tools.isprime(cursum): if j - i + 1 > maxlen: maxlen = j - i + 1 maxsum = cursum j += 1 print maxsum
from tools import isprime print(isprime(1333333))
import math import tools primes=[] tools.loadprimes(primes, 1000000) n = 9 result = 0 while True: for p in primes: if p > n-2: result = n break sq = (n - p)/2 rj = int(math.sqrt(sq)) if rj*rj == sq: break n += 2 while tools.isprime(n): n += 2 if result: break print result
import tools maxn = 0 maxa = 0 maxb = 0 for b in range(-1000, 1001): if not tools.isprime(abs(b)): continue for a in range(-1000, 1001): if not a%2: continue n = 0 while True: x = n*n + a*n + b #print b, a, n, x if tools.isprime(abs(x)): if n > maxn: maxn = n maxa = a maxb = b else: break n += 1 print maxa*maxb
limit = 1000000000 def genadmissible(number, pos, result): while True: number = number*primes[pos] if number >= limit: return result.append(number) print tools.primefactorization(primes, number, 32000) genadmissible(number, pos+1, result) admissible = [] genadmissible(1, 0, admissible) print admissible, len(admissible) result = set() for n in admissible: i = 3 while True: if tools.isprime(n+i): result.add(i) break i = i+2 print sum(result)
import tools #output = [1, 3, 5, 7, 9] i = 5 lasttr = 3 totalcount = 5 primecount = 3 while True: totalcount += 4 tr = lasttr + 3*(i-3) + i - 1 if tools.isprime(tr): primecount += 1 if tools.isprime(tr + (i-1)): primecount += 1 if tools.isprime(tr + 2*(i-1)): primecount += 1 if tools.isprime(tr + 3*(i-1)): primecount += 1 if primecount*1.0/totalcount < 0.1: break lasttr = tr i += 2 print i