def find_largest(up_to_number): ''' Finds longest consecutive primes that add up to a prime. ''' primes = erat(up_to_number) max_length = len(primes) current_sum = sum(primes) def check_length(length, current_sum): ''' Helper function. ''' start = 0 end = length working_val = current_sum while end < up_to_number: if working_val >= up_to_number: break elif isprime(working_val): return working_val working_val += primes[end] - primes[start] start+=1 end+=1 return False for length in range(max_length-1,0,-1): current_sum -= primes[length] result = check_length(length, current_sum) if result: return result
def test_erat(self): for i in range(2, 544): self.assertEqual(sieves.erat(i), self.primes_below(i))
def test_erat_empty(self): # Check that erat() returns an empty list for values below 2. for i in (1, 0, -1, -17): self.assertEqual(sieves.erat(i), [])
def test_erat_returns_list(self): self.assertTrue(isinstance(sieves.erat(10), list))
def find_ways(num): primes = erat(num) return primes