def main(): limit = 1000 primes = [2] while primes[-1] < limit: primes.append(get_next_prime(primes[-1])) seqb = primes[:-1] best = ((0, 0), 0) for b in seqb: if b == 2: seqa = [i for i in range(-limit + 1, limit) if i % 2 == 0] else: seqa = [i for i in range(-limit, limit + 1) if i % 2 == 1] for a in seqa: count = 0 n = 0 while True: if isprime(n ** 2 + a * n + b): count += 1 if count > best[1]: best = ((a, b), n) n += 1 else: break print(best, best[0][0] * best[0][1])
def main(): width = 5 primes = 3 num = 13 while primes / ((width // 2) * 4 + 1) > 0.10: for _ in range(3): if isprime(num): primes += 1 num += width - 1 width += 2 num += width - 1 print('Spiral side length:', width) print('Primes on diagonal:', primes)
def main(): counter = 0 for n in range(2, 10 ** 6): if all([isprime(r) for r in rotate(n)]): counter += 1 print(n, counter)
def main(): total = 0 for n in range(10, 10**6): if all([isprime(p) for p in truncate(n)]): total += n print(n, total)
def main(): i = 3 while isprime(i) or iscounter(i): i += 2 print(i)
def main(): for l in range(9, 0, -1): for p in generate_pandigitals(l): if isprime(p): print(p) break
def get_next_prime(num): while not isprime(num + 1): num += 1 return num + 1