from math import sqrt import tools primes = [] primelimit = 12000 tools.loadprimes(primes, primelimit) limit = 12000 solutions = {} minnumbers = {} def prod(a): r = 1 for n in a: r *= n return r def combine(n, min_factor, factors): for f in xrange(min_factor, int((n**0.5)+1)): if n % f != 0: continue combine(n / f, f, factors + [f]) if n == 1: orig_n = prod(factors) x = orig_n - sum(factors) if x >= 0: k = len(factors) + x if (not minnumbers.has_key(k)) and k <= limit:
return t def ispermutation(x, y): xs = sorted(str(x)) ys = sorted(str(y)) if len(xs) != len(ys): return False p = len(xs)-1 while p >= 0: if xs[p] == ys[p]: p -= 1 else: break return (p == -1) tools.loadprimes(primes, 10000000) p2 = list(primes) p2.reverse() sr = int(math.sqrt(10000000)) minrel = 100 minn = 0 minprimes = () for p in primes: n = p*p if n >= 10000000: break
from math import sqrt import tools primes = [] tools.loadprimes(primes, 7072) limit = 50000000 squares = [] cubes = [] fourths = [] for p in primes: squares.append(p**2) cubes.append(p**3) fourths.append(p**4) result = set() for s in squares: for c in cubes: if s+c >= limit: break for f in fourths: summa = s+c+f if summa < limit: result.add(summa) else: break print len(result)
import tools primes = [] tools.loadprimes(primes, 32000) 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
import tools import math limit = 999966663333 #limit = 1000 sd = [] reallimit = int(math.sqrt(limit)) primes = [] tools.loadprimes(primes, reallimit) for pi in range(len(primes)-1): lp = primes[pi] up = primes[pi+1] j = lp*(lp+1) sq = up*up while j < sq and j <= limit: if j%up: sd.append(j) j += lp j = up*(up-1) sq = lp*lp while j > sq: if j <= limit and j%lp: sd.append(j)
import tools, math primes = [] tools.loadprimes(primes, 9000) primes.remove(2) def crosssum(x): s = 0 while x: s += x%10 x /= 10 return s def findnextindex(current, m): if m == 0: return current+1 a = 1 while current+a < len(primes) and primes[current+a]%3 != m: a += 1 return current + a def combines(a): ret = True for i in a: for j in a: if i == j: continue