Anthony
Anthony

Reputation: 23

conditional not appending all correct integers to proper list

I can't seem to figure out a way to include some multiples into my non prime list. for examples "15" "49" "9" is considered a prime number. Any ideas or corrections ?

number = int(input("Enter a number. "))
non_prime = []
prime = []


def isPrime(number):
    for i in range(2,number):
        if number % i == 0:  
            return False
        else:
           return True

def append(number):
    for i in range(1,number+1):
        if isPrime(i) == True:
            prime.append(i)
        else:
            non_prime.append(i)


append(number)
print(non_prime)
print(prime)
print (len(prime))

Upvotes: 0

Views: 43

Answers (1)

gokhansim
gokhansim

Reputation: 123

if number % i == 0:  
   return False
else:
   return True

Your function returns true for all odd numbers, since it checks if they can be divided by 2 in the 'if' clause, and since they cannot be divided by 2, isPrime returns True. You can do the following:

def isPrime(number):
    for i in range(2,number):
        if number % i == 0:  
            return False
    return True

If a number can exit the for loop, it cannot be divided by any number up to it, so it is a prime number.

Upvotes: 3

Related Questions