def get_odd_composites(n): sieve = get_sieve(n) composites = [] for i in xrange(2, len(sieve)): if not sieve[i] and i%2 == 1: composites.append(i) return composites
#!/usr/bin/python # Euler Project Problem 37 """Benchmark Intel Core2 Duo CPU P8400 @ 2.26GHz real 0m0.761s user 0m0.736s sys 0m0.024s """ from eulertools import get_sieve, get_primes sieve = get_sieve(10**6) primes = get_primes(10**6) del primes[0:4] res = 0 for p in primes: for i in xrange(0, len(str(p))): if not sieve[int(str(p)[i:])]: truncatable_prime = False break if not sieve[int(str(p)[:i+1])]: truncatable_prime = False break truncatable_prime = True if truncatable_prime: res += p print 'Answer to problem 37:', res
#!/usr/bin/python # Euler Project Problem 35 """Benchmark Intel Core2 Duo CPU P8400 @ 2.26GHz real 0m1.175s user 0m1.156s sys 0m0.016s """ import eulertools from math import ceil, log10 sieve = eulertools.get_sieve(10**6) rotate = lambda x, n: (x-(x/10**(n-1))*10**(n-1))*10 + x/10**(n-1) c = 0 for p in xrange(2, 10**6): n = i = int(ceil(log10(p))) while sieve[p] and i > 0: p = rotate(p, n) i -= 1 if i == 0: c += 1 print 'Answer to problem 35:', c