Python Challenge - Prime Number Finder

Hope you can give me some insights in how I can improve my code:)

def prime_finder(n):
#We create a list where will save the prime numbers that we find
primes =
#And a list for all not prime numbers
not_primes =
#We do this by searching all the numebrs from 2 to n
for index in range(2,n+1):
#If the number is not in the not_primes list the we add it to the prime numbers list
if index not in not_primes:
primes.append(index)
#After we added the prime number to our list we look for all the multiples of our prime number, starting by the square of it until we reach the half of n (i thin this can be done until the square root of n or something similar to that but to not make any mistakes doing it untill the half works)
for index_2 in range(index,int(n/2)+1):
not_primes.append(index*index_2)
else:
#If the index is in the not_primes list that means that it is not a prime number, so we can skip with the next number of the range
continue;
#Finally the function returns the list of prime numbers
return primes

print(prime_finder(11))

def prime_finder(n):

def prime_finder(n): # Write your code here if n < 2: return None primes = [2] for i in range(3,n+1): for prime in primes: if i%prime == 0: prime = False break if prime: primes.append(i) return primes print(prime_finder(11))

import math #importing library to be able to use math.sqrt() function

def prime_finder(n):
primes= # creating empty list for storing primes
for i in range(2, n+1): # starting checking from number 2, because 0 and 1 are not primes
if i==2 or i==3: # 2 and 3 are primes
primes.append(i)
continue
elif i%2==0 or i%3==0: #I’m skipping numbers divided by 2 and 3
continue
else:
is_prime = True
for iter in range(5, int(math.sqrt(i)+1), 6):
if i%iter==0 or i%(iter+2)==0:
is_prime = False
break
if is_prime == True:
primes.append(i)
return primes
print(prime_finder(17))

def prime_finder(n): prime_nr = [] for i in range (2, n + 1): if i % i == 0 and n % n == 0: counter = 0 for j in range (1, i + 1): if i % j == 0: counter += 1 if counter == 2: prime_nr.append(i) return prime_nr print(prime_finder(11))
def prime_finder(n): prime_nums_lst = [] if n <= 1: return prime_nums_lst for i in range (2 , n+1): canidates_lst = [] for j in range (1 , i+1): if i % j == 0: canidates_lst.append(j) if len(canidates_lst) == 2 and canidates_lst[1] == i: prime_nums_lst.append(i) break return prime_nums_lst print(prime_finder(11))
def prime_finder(n): prime_numbers = [] checking_number = 1 while checking_number < n: checking_number += 1 divisors = range(1, checking_number + 1) for divisor in divisors: if divisor == checking_number: prime_numbers.append(checking_number) elif checking_number % divisor == 0 and divisor != 1: break return prime_numbers print(prime_finder(5))
def prime_finder(n):
  # Write your code here
  numbers = [i + 1 for i in range(n)]
  prime_numbers = []

  for num in numbers:
      count = 0
      for i in range(1, num + 1):
          if num % i == 0:
          count += 1

      if count == 2:
          prime_numbers.append(num)
      
  return prime_numbers
 
print(prime_finder(11))
def prime_finder(n):
  # Create a list of numbers from 2 to n
  numbers = list(range(2, n+1))
  
  # Create an empty list to hold prime numbers
  primes = []

  # Continue looping while there are numbers left to check
  while len(numbers) > 0:
    # Take the first number in the list as the current prime
    prime = numbers[0]
    
    # Add the prime number to the primes list
    primes.append(prime)
    
    # Remove all multiples of the current prime from the list
    numbers = [num for num in numbers if num % prime != 0]
  
  # Return the list of prime numbers
  return primes

# Test the function
print(prime_finder(11))

This is the answer I have come up with

def prime_finder(n):
    numbers = list(range(2, n+1))
    primes = []

    while len(numbers) > 0:
        prime = numbers[0]
        primes.append(prime)
        print(f"\nCurrent prime: {prime}")
        print(f"Numbers before filtering: {numbers}")

        # Instead of list comprehension, use a loop to filter
        new_numbers = []
        for num in numbers:
            if num % prime != 0:
                new_numbers.append(num)
            else:
                print(f"Removed {num} because it's divisible by {prime}")
        
        numbers = new_numbers
        print(f"Numbers after filtering: {numbers}")

    return primes

# Test the function
print("\nPrime numbers found:", prime_finder(30))```

Exp of the code: how it works.

Here is my solution to the finding a prime number challenge:

def prime_finder(n): # Write your code here prime_list = [] for i in range(2, n + 1): is_prime = True for k in range(2, i + 1): if i == k: continue else: if i % k == 0: is_prime = False break if is_prime == True: prime_list.append(i) return prime_list print(prime_finder(11))
def prime_finder(n):
    if n < 2:
        return []
    sieve = [True] * (n + 1)
    sieve[0], sieve[1] = False, False
    limit = int(n**0.5) + 1
    for i in range(2, limit):
        if sieve[i]:
            for j in range(i * i, n + 1, i):
                sieve[j] = False
    return [i for i, is_prime in enumerate(sieve) if is_prime]

if __name__ == "__main__":
    print(prime_finder(11))
1 Like

Very nicely done!

Hi everyone, here´s my code for the prime number challenge. What do you think?

Thanks for your feedback :slight_smile: