def solve(n=100, verbose=False): result = 0 pfound = 0 results = [] i = 8 while pfound < 11: if is_prime(i): # and ['4','6','8','0'] not in str(i): if verbose: print 'checking prime ', i s = str(i) relevance = 1 for j in xrange(len(s)): num = s[j:] if verbose: print '\t truncating from left, now checking ', num if not is_prime(int(num)): relevance = 0 break num = s[:j + 1] if verbose: print '\t truncating from right, now checking ', num if not is_prime(int(num)): relevance = 0 break #j = j + 1 if relevance: if verbose: print 'found it: ', i results.append(i) pfound = pfound + 1 i = i + 1 result = sum(results) return result
def greatest_pandigital(): #Note: Nine numbers cannot be done #(1+2+3+4+5+6+7+8+9=45 => always dividable by 3) #Note: Eight numbers cannot be done #(1+2+3+4+5+6+7+8=36 => always dividable by 3) for n in range(1, 8)[::-1]: s = ''.join([str(a) for a in range(1, n + 1)[::-1]]) if verbose: print 'checking %i pandigital numbers: ' % n, s for e in permutations(s): e = ''.join(e) if verbose: print e if is_prime(int(e)): return e
def check_sums_for_prime(): result = 0 l = 0 for (prim, i) in zip(__primes[:20], range(20)): s = 0 j = i while s + __primes[j] < n: s += __primes[j] if is_prime(s): if j - i > l: l = j - i result = s if args.verbose: print prim, result, s, l, j - i j = j + 1 return result
def solve(n=1000000, verbose=False): results = [] for num in sieve(n): if num not in results: if verbose: print "checking prime %i for circularity ..." % num relevant = True for rotated_prime in all_rotations(str(num)): if not is_prime(int(rotated_prime)): relevant = False if relevant: if verbose: print " ... it is circular!" print rotations results += [int(e) for e in all_rotations(str(num))] result = len(np.unique(results)) return result
def solve(n=4, verbose=True): result = 0 i = 0 count = n while not result: i += 1 if not is_prime(i): if len(set(factors2(i))) == n: count -= 1 else: count = n else: count = n if not count: result = i - n if verbose: print i, count return result
def solve(verbose=True): """ Find the smallest odd composite number that cannot be written as the sum of a prime and a two times a square. """ upperLimit = 100000 result = 1 for num in xrange(2, upperLimit): if not is_prime(num) and num % 2: result = 0 for e in sieve(num): for f in xrange(int(np.ceil(np.sqrt((num - e) / 2)) + 1)): if verbose: print num, e, f, result result += num == e + 2 * f**2 if not result: result = num break return result
if True: target = 10001 from Primes import is_prime i, answer = 0, 1 while(i < target): answer += 1 if is_prime(answer): i += 1 print(answer) raw_input("Press ENTER")
if True: target = 600851475143 from Primes import is_prime, low_prime while True: if is_prime(target): answer = target break target //= low_prime(target) print(answer) raw_input('Press ENTER')