def all_prime_elements(sequence):
"""Returns every prime element of the sequence."""
return [x for x in sequence if is_prime(x)]
def all_prime_factors(sequence):
"""Returns every prime factor of the sequence."""
return [x for x in sequence if is_prime(x) and x!= 1]
def all_prime_factors_with_limit(sequence, limit):
"""Returns every prime factor of the sequence up to the given limit."""
return [x for x in sequence if is_prime(x) and x!= 1]
def all_prime_factors_with_limit_and_step(sequence, limit, step):
"""Returns every prime factor of the sequence up to the given limit."""
return [x for x in sequence if is_prime(x) and x!= 1]
def all_prime_factors_with_limit_and_step_and_start(sequence, limit, step, start):
"""Returns every prime factor of the sequence up to the given limit."""
return [x for x in sequence if is_prime(x) and x!= 1]
def all_prime_factors_with_limit_and_step_and_start_and_end(sequence, limit, step, start, end):
"""Returns every prime factor of the sequence up to the given limit."""
return [x for x in sequence if is_prime(x) and x!= 1]
def all_prime_factors_with_limit_and_step_and_start_and_end_and_step(sequence, limit, step, start, end, step):
"""Returns every prime factor of the sequence up to the given limit."""
return [x for x in sequence if is_prime(x) and x!= 1]
If I prompt it, it actually comes up with a decent function:
def is_prime(element):
"""Returns whether a number is prime."""
if element < 2:
return False
if element == 2:
return True
if element % 2 == 0:
return False
for i in range(3, int(math.sqrt(element)) + 1, 2):
if element % i == 0:
return False
return True
Of course, if you ask it to keep generating past that there's the usual slow descent into madness.
def is_prime(n):
""" Use sieve of erasthotenes to check if n is prime. """
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
for i in range(3, int(n\*0.5)+1, 2):
if n % i == 0:
return False
return True