def quadratic_primes(): '''Find the product of the coefficients, a and b, for the quadratic expression n^2 + an + b that produces the maximum number of primes for consecutive values of n, starting with n=0.''' primes = [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997 ] max_count = 0 result = (0, 0) for b in primes: for a in range(-999, 1000): n = 0 count = 0 while p3.is_prime(n**2 + a * n + b): count += 1 n += 1 if max_count < count: max_count = count result = (a, b) return result[0] * result[1]
def primes(max_val): p = [2] i = 2 while p[-1]<max_val: i+=1 if is_prime(i): p.append(i) return p[:-1]
def nth_prime(n): p = [] i = 0 while len(p)<n: i+=1 if is_prime(i): p.append(i) return p[-1]
def sum_prime(num): '''Return sum of primes < num >>> sum_prime(2) 2 >>> sum_prime(10) 17 ''' total = 0 for i in range(2, num + 1): if p3.is_prime(i): total += i return total
def primes(num): '''Return a list of primes < num >>> primes(2) [] >>> primes(3) [2] >>> primes(10) [2, 3, 5, 7] ''' l = [] for i in range(2, num): if p3.is_prime(i): l.append(i) return l
def ten_thousand_first_prime(): '''Return the 10001st prime''' count = 1 # 2 is the only even prime, start from 3 after and increment by 2 start = 3 end = 9999 while True: for i in range(start, end, 2): if p3.is_prime(i): count += 1 if count == 10001: return i # set the next interval start = end end = end + 10000
def circular_primes(num): '''Return the number of circular primes < num >>> circular_primes(2) 0 >>> circular_primes(3) 1 >>> circular_primes(100) 13 ''' l = primes(num) count = 0 for prime in l: rs = rotations(prime) for rotation in rs: if not p3.is_prime(rotation): break else: count += 1 return count