def p46_test(c): "Test if a prime and square that fit Goldbach's rule can be found." for p in prime_generator(): diff = c - p if diff < 0: return False if is_square(diff / 2): return True
def _find_smallest_prime(cls, n): assert isinstance(n, int) pg = prime_generator(n) for prime in pg: if n % prime == 0: return prime raise Exception, 'no prime found for {}'.format(n)
def max_prime_sequence(): max_seq = (1,0) for c in primes.prime_generator(): if c>1000: break for b in range(-c +1,1000): # when n = 1 then we have n -b +c so the result has to be at least 2 res = prime_sequence(b,c) if res[2] > max_seq[0]: max_seq = (res[2], res[0] * res[1]) return max_seq[1]
def find_truncatable_primes(count): "Find the first count truncatable primes, assuming that many exist." result = [] for n in prime_generator(): if n < 10: continue if isTruncatablePrime(n, 1) and isTruncatablePrime(n, -1): result.append(n) if len(result) == count: break return result
def find_max_pandigital_prime(digrange): for i in range(digrange,0,-1): for p in itertools.permutations([x for x in reversed([n for n in range(1,i+1)])]): p = int(''.join([str(x) for x in p])) stop = int(math.sqrt(p)) no_factors = True for prime in primes.prime_generator(): if p % prime == 0: no_factors = False break if prime > stop: break if no_factors: return p return None
def generate_remarkable_set(size): sets = [] for p in prime_generator(): print p for j in range(0, len(sets)): good = True for q in sets[j]: if not remarkable_pair(p, q): good = False break if good: newset = sets[j] + [p] sets.append(newset) if len(newset) == size: return newset sets.append([p])
from primes import prime_generator # Old sieve implementation. About 20 times slower for the same result. #def sieve(n): # """Return a list of primes less than n.""" # if n < 2: # return [] # # # Space is a list of tuples (bool, int) where the bool is true # # if the int might still be prime, false if we know it's not. # space = [] # for i in range(0,n): # space.append((True, i)) # primes = [] # # for i in range(2,n): # if space[i][0] == True: # primes.append(space[i][1]) # for j in range(i*i,n,i): # if space[j][0] == True and space[j][1] % space[i][1] == 0: # space[j] = (False, space[j][1]) # # return primes if __name__ == '__main__': for i, p in enumerate(prime_generator()): if i == 10000: print p break