Пример #1
0
from primes import primes_sieve, primes_sieve_gen

limit = 1000000
primes = [x for x in primes_sieve_gen(10000)]
is_prime = primes_sieve(1000000)
squares = [i * i for i in range(1, 100)]

first = [i for i in range(2, limit) if not i % 2 == 0 and not is_prime[i]]
second = [False] * limit
for i in first:
    second[i] = True

for i in primes:
    for j in squares:
        second[i + 2 * j] = False

print second.index(True)
Пример #2
0
from primes import primes_sieve, primes_sieve_gen
import itertools

def has_at_least_3_same_digits(number):
    d = {}
    for letter in str(number):
        if letter not in d.keys():
            d[letter] = 1
        else:
            d[letter] += 1
    return max(d.itervalues()) >= 3


limit = 1000000

primes = [x for x in primes_sieve_gen(limit)]
primes = primes[primes.index(56003) - 1:]
is_prime = primes_sieve(limit)

replacement_digits = (1, 2, 3, 4, 5, 6, 7, 8, 9, 0)

def calculate():
    found = False
    already_checked = []
    counter = 10
    while not found:
        prime = primes.pop(0)
        if not has_at_least_3_same_digits(prime):
            continue
        print prime
        for n_of_digits in xrange(3, len(str(prime)), 3):
Пример #3
0
 def __init__(self):
     self.limit = 10000
     self.primes_table = [x for x in primes_sieve_gen(self.limit)]
     self.result = 5 * self.limit
     self.pairs = {}
     self.primes = []
Пример #4
0
from primes import primes_sieve, primes_sieve_gen

limit = 1000000
prime_list = [i for i in primes_sieve_gen(1000000)]
is_prime = primes_sieve(limit)

def rotate(n, l):
    return n[l:] + n[:l]

def get_rotations(n):
    for r in range(len(n)):
        yield rotate(n, r)

numbers = ['2', '4', '5', '6', '8']
result = set()
for i in prime_list:
    if any(l in numbers for l in str(i)) and i != 2 and i != 5:
        continue
    if all([is_prime[int(x)] for x in list(map(''.join, get_rotations(str(i))))]):
        for a in list(map(''.join, get_rotations(str(i)))):
            result.add(int(a))

print result, len(result)