sequence? Notes: Brute force with my primes generator should be good enough. If we happen to get some primes which do have permutations (but not three) we can boot em. """ from itertools import permutations from projecteuler import all_primes_between if __name__ == '__main__': primes = all_primes_between(2, 9999) x = [] for p in primes: if p < 1000: pass else: for p2 in permutations(str(p)): p2 = int(''.join(p2)) if (p2 > p) and (p2 in primes): p3 = 2 * p2 - p if (p3 < 10000) and (p3 in primes) and (sorted(str(p3)) == sorted(str(p))): x.append((p, p2, p3)) print x
What 12-digit number do you form by concatenating the three terms in this sequence? Notes: Brute force with my primes generator should be good enough. If we happen to get some primes which do have permutations (but not three) we can boot em. """ from itertools import permutations from projecteuler import all_primes_between if __name__ == '__main__': primes = all_primes_between(2, 9999) x = [] for p in primes: if p < 1000: pass else: for p2 in permutations(str(p)): p2 = int(''.join(p2)) if (p2 > p) and (p2 in primes): p3 = 2 * p2 - p if (p3 < 10000) and (p3 in primes) and (sorted(str(p3)) == sorted(str(p))): x.append((p, p2, p3)) print x
Simple enough. Generate a list of primes, check the sum of all the sub-sets of increasing size. To do this, we make a cumulative sum. Then we check the offsets (csPrimes - csPrimes[i]) for the largest prime. """ from projecteuler import all_primes_between N = 1000000 # N = 100 if __name__ == "__main__": primes = all_primes_between(2, N) primeSums = [0] for i in range(len(primes)): primeSums.append(primeSums[-1] + primes[i]) L = len(primeSums) numberOfPrimes = 0 pMax = 0 for i in range(len(primeSums)): for j in range(i - numberOfPrimes - 1, -1, -1): dp = primeSums[i] - primeSums[j] if dp > N: break if dp in primes: numberOfPrimes = i - j
s = set() sp = str(p) L = len(sp) s = {int(''.join([sp[(offset + j) % L] for j in range(L)])) for offset in range(L)} return s def any_evens(p): return any(int(el) % 2 == 0 for el in str(p)) or p == 2 if __name__ == '__main__': n = all_primes_between(2, 1000000) unchecked = set(n) circularPrimes = set() i = 0 for p in n: if any_evens(p): unchecked.discard(p) else: if p / 1000 > i: print p i = p / 1000 if p in unchecked: ps = perms(p) isCircular = all(el in n for el in ps)
L = len(sp) s = { int(''.join([sp[(offset + j) % L] for j in range(L)])) for offset in range(L) } return s def any_evens(p): return any(int(el) % 2 == 0 for el in str(p)) or p == 2 if __name__ == '__main__': n = all_primes_between(2, 1000000) unchecked = set(n) circularPrimes = set() i = 0 for p in n: if any_evens(p): unchecked.discard(p) else: if p / 1000 > i: print p i = p / 1000 if p in unchecked: ps = perms(p) isCircular = all(el in n for el in ps)
Notes: Simple enough. Generate a list of primes, check the sum of all the sub-sets of increasing size. To do this, we make a cumulative sum. Then we check the offsets (csPrimes - csPrimes[i]) for the largest prime. """ from projecteuler import all_primes_between N = 1000000 #N = 100 if __name__ == '__main__': primes = all_primes_between(2, N) primeSums = [0] for i in range(len(primes)): primeSums.append(primeSums[-1] + primes[i]) L = len(primeSums) numberOfPrimes = 0 pMax = 0 for i in range(len(primeSums)): for j in range(i - numberOfPrimes - 1, -1, -1): dp = primeSums[i] - primeSums[j] if dp > N: break if dp in primes: numberOfPrimes = i - j