def main(): nums = [] p_gen = prime_generator() primes = [next(p_gen)] for i in count(1): factors = 0 while i/30 >= primes[-1]: primes.append(next(p_gen)) for n in primes: temp = i once = True while temp % n == 0: if once: factors += 1 once = False temp /= n if i/30 < n or 4 < factors: break logging.debug('{} has {} factors'.format(i, factors)) if factors == 4: nums.append(i) else: nums = [] if len(nums) == 4: break print('Answer: {}'.format(nums))
def main(): prime_list = [] trunc_prime_sum = 0 trunc_prime_count = 0 for prime in prime_generator(): prime_list.append(prime) if prime < 10: continue logging.debug("Checking prime {}".format(prime)) trunc_prime = True for i in range(1,len(str(prime))): left = int(str(prime)[:i]) right = int(str(prime)[i:]) logging.debug("Testing {} and {}".format(left, right)) if left not in prime_list or right not in prime_list: logging.debug("Nope!") trunc_prime = False break if trunc_prime: trunc_prime_count += 1 logging.info(prime) trunc_prime_sum += prime if trunc_prime_count >= 11: break print('Answer: {}'.format(trunc_prime_sum))
def main(): limit = 2e6 prime_sum = 0 for prime in prime_generator(): if prime > limit: break prime_sum += prime print prime_sum
def main(): prime_list = [] trunc_prime_sum = 0 trunc_prime_count = 0 for prime in prime_generator(): prime_list.append(prime) if prime < 10: continue logging.debug("Checking prime {}".format(prime)) trunc_prime = True for i in range(1, len(str(prime))): left = int(str(prime)[:i]) right = int(str(prime)[i:]) logging.debug("Testing {} and {}".format(left, right)) if left not in prime_list or right not in prime_list: logging.debug("Nope!") trunc_prime = False break if trunc_prime: trunc_prime_count += 1 logging.info(prime) trunc_prime_sum += prime if trunc_prime_count >= 11: break print('Answer: {}'.format(trunc_prime_sum))
def main(): nums = [] p_gen = prime_generator() primes = [next(p_gen)] for i in count(1): factors = 0 while i / 30 >= primes[-1]: primes.append(next(p_gen)) for n in primes: temp = i once = True while temp % n == 0: if once: factors += 1 once = False temp /= n if i / 30 < n or 4 < factors: break logging.debug('{} has {} factors'.format(i, factors)) if factors == 4: nums.append(i) else: nums = [] if len(nums) == 4: break print('Answer: {}'.format(nums))
def prime_pairs(lim, block = 1000100): pg = prime_generator(block) large = pg.next() for p in pg: (large, small) = (p, large) if small >= lim: return if large - small == 2: yield (large, small)
def prime_pairs(lim, block=1000100): pg = prime_generator(block) large = pg.next() for p in pg: (large, small) = (p, large) if small >= lim: return if large - small == 2: yield (large, small)
def main(): max_pan_len = (0,0) for prime in prime_generator(): if prime > 987654321: break pan_len = pandigital_len(str(prime)) if pan_len > max_pan_len[0]: max_pan_len = (pan_len, prime) logging.info(max_pan_len) print('Answer: {}'.format(max_pan_len))
def main(): max_pan_len = (0, 0) for prime in prime_generator(): if prime > 987654321: break pan_len = pandigital_len(str(prime)) if pan_len > max_pan_len[0]: max_pan_len = (pan_len, prime) logging.info(max_pan_len) print('Answer: {}'.format(max_pan_len))
def brute(): lim = 100000 for p in prime_generator(): if p >= lim: break for n in range(1,lim): m = n**2 * (n + p) if is_cube(m): if is_cube(n): nu = round(n ** (1.0/3)) print "%d^9 + %d^2 * %d = %d^3" %(nu,n,p,round(m**(1.0/3)))
def main(): big_num = 100000 prime_sum = 2 + 3 + 5 for p in prime_generator(block=100100): if p <= 5: continue if p >= big_num: break stdout.write("%d\r" %(p)) stdout.flush() if not match(p): prime_sum += p print "Sum of all primes with property is %d" %(prime_sum)
def main(): big_num = 100000 prime_sum = 2 + 3 + 5 for p in prime_generator(block=100100): if p <= 5: continue if p >= big_num: break stdout.write("%d\r" % (p)) stdout.flush() if not match(p): prime_sum += p print "Sum of all primes with property is %d" % (prime_sum)
def main(): n_prime = prime_generator() primes = [next(n_prime)] max_conseq = 0 for a in range(-999,1000): for b in range(-999,1000): consec = consec_quad_primes(a,b,primes,n_prime) if max_conseq < consec: max_conseq = consec coeff = (a,b) print("{}: from {}".format(max_conseq, str(coeff)))
def factor(n): f = [] p_gen = prime_generator() while not is_prime(n) and n > 1: p = p_gen.next() while n % p == 0: n /= p f.append(p) print n if n != 1: f.append(int(n)) return f
def main(): big_num = 10**10 for n,p in enumerate(prime_generator(block=10000000), start=1): if p**2 < big_num: continue r = prime_remainder(p,n) stdout.write("%d: %d: %d\r" %(n,p,r)) stdout.flush() if r > big_num: stdout.write(" " * 40 + "\r") print "%d: %d: %d" %(n, p, r) return
def brute(): lim = 100000 for p in prime_generator(): if p >= lim: break for n in range(1, lim): m = n**2 * (n + p) if is_cube(m): if is_cube(n): nu = round(n**(1.0 / 3)) print "%d^9 + %d^2 * %d = %d^3" % (nu, n, p, round( m**(1.0 / 3)))
def main(): lim = 1000000 ans = 0 for p in prime_generator(block=lim + 1000): if p >= lim: break (m, args) = match(p) if m: (a, c) = args stdout.write("%d^3 + %d^2 * %d = %d^3\r" % (a, a, p, c)) stdout.flush() ans += 1 print "There are %d primes with propery below %d" % (ans, lim), print " " * 10
def main(): n = 1 p_gen = prime_generator() prime_list = [next(p_gen)] while True: n += 2 while n > prime_list[-1]: prime_list.append(next(p_gen)) if n in prime_list: continue if not fits_conjecture(n, prime_list): print('Answer: {}'.format(n)) break
def main(): lim = 1000000 ans = 0 for p in prime_generator(block = lim + 1000): if p >= lim: break (m, args) = match(p) if m: (a,c) = args stdout.write("%d^3 + %d^2 * %d = %d^3\r" %(a,a,p,c)) stdout.flush() ans += 1 print "There are %d primes with propery below %d" %(ans, lim), print " " * 10
def main(): big_num = 10**9 lim = 40 c = 0 prime_sum = 0 for p in prime_generator(block=10000000): if p == 5 or p == 2: continue a = A(p) stdout.write("%d: %d\r" % (c, p)) stdout.flush() if big_num % a == 0: #print p prime_sum += p c += 1 print "%d: %d" % (c, p) if c >= lim: break print "Sum of the first %d primes is %d" % (lim, prime_sum)
def main(): big_num = 10**9 lim = 40 c = 0 prime_sum = 0 for p in prime_generator(block=10000000): if p == 5 or p == 2: continue a = A(p) stdout.write("%d: %d\r" %(c,p)) stdout.flush() if big_num % a == 0: #print p prime_sum += p c += 1 print "%d: %d" %(c, p) if c >= lim: break print "Sum of the first %d primes is %d" %(lim, prime_sum)
def main(): #big_num = 10000 big_num = 1000000 s_sum = 0 pg = prime_generator(big_num + 1000) large = pg.next() large = pg.next() large = pg.next() #print large for p in pg: (large, small) = (p, large) if small > big_num: break stdout.write("%d: %d\r" % (large, small)) stdout.flush() s_sum += get_s(large, small) #if get_s(large,small) != slow_get_s(large, small): # print "Problem: (%d, %d)" %(large,small) print "Sum of all s is %d" % (s_sum)
def main(): #big_num = 10000 big_num = 1000000 s_sum = 0 pg = prime_generator(big_num + 1000) large = pg.next() large = pg.next() large = pg.next() #print large for p in pg: (large, small) = (p, large) if small > big_num: break stdout.write("%d: %d\r" %(large, small)) stdout.flush() s_sum += get_s(large, small) #if get_s(large,small) != slow_get_s(large, small): # print "Problem: (%d, %d)" %(large,small) print "Sum of all s is %d" %(s_sum)
def main(): set_dict = {} limit = False max_elements = [1e6] * 5 i = 0 for prime in prime_generator(block=1000000): i += 1 if i % 100000 == 0: logging.info("Testing {}".format(prime)) if limit and limit < prime: break [p, q] = populate(set_dict, prime) logging.debug(set_dict) logging.debug("p: {}\nq: {}".format(str(p), str(q))) element_set = has_valid_set(set_dict, [p, q]) if element_set and sum(element_set) < sum(max_elements): element_set.sort() print("{:d}: {!s}".format(sum(element_set), element_set)) k = str(element_set[-1]) limit = int(k + k) max_elements = element_set
def wheel_sieve(diffs, lim, stop): wheel = {} for p in prime_generator(block=(stop+100)): stdout.write("%9d\r" %(p)) stdout.flush() if p > stop: break if p == 2 or p == 5: continue spoke = wheel_worker(p, diffs) # print "%2d: %s" %(p, spoke) wheel[p] = spoke primes = sorted(wheel.keys()) for i in range(lim//10): for p in primes: flag = True if not wheel[p][i % p]: if i == 1: print "%d: %d: %s" %(p,i%p,wheel[p]) flag = False break if flag: yield i*10
def wheel_sieve(diffs, lim, stop): wheel = {} for p in prime_generator(block=(stop + 100)): stdout.write("%9d\r" % (p)) stdout.flush() if p > stop: break if p == 2 or p == 5: continue spoke = wheel_worker(p, diffs) # print "%2d: %s" %(p, spoke) wheel[p] = spoke primes = sorted(wheel.keys()) for i in range(lim // 10): for p in primes: flag = True if not wheel[p][i % p]: if i == 1: print "%d: %d: %s" % (p, i % p, wheel[p]) flag = False break if flag: yield i * 10
def main(): prime_gen = prime_generator() prime_list = [next(prime_gen)] circular_count = 0 logging.info("Starting") for i in count(): while i >= len(prime_list): logging.debug("Extending primes array") new_prime = next(prime_gen) prime_list.append(new_prime) circular = True if prime_list[i] >= 1000000: break logging.debug("Testing " + str(prime_list[i])) for circ in circ_gen(prime_list[i]): while circ > prime_list[-1]: prime_list.append(next(prime_gen)) if circ not in prime_list: circular = False break if circular: logging.info("This prime is circular " + str(prime_list[i])) circular_count += 1 print('There are {} circular primes'.format(circular_count))
def nth_prime(n): i = 1 for prime in prime_generator(): i += 1 if i > n: return prime