mgale81
mgale81

Reputation: 31

why does my prime number checker program always say the number is prime?

I have to make a program where the user inputs a number and it checks to see if its prime but no matter what you enter it says its prime. How do I fix this code?

def is_prime(n):
    if n < 2: return False
    for x in range(2, int(n**0.5) + 1):
        if n % x == 0:
            return False
    return True

def main():
    keep_going='y'
    while keep_going=='y':
        n=int(input("Please enter a number to see if it's prime: "))
        is_prime(n)
        if True:
            print("It's prime")
        if False:
            print("it's not prime")
        keep_going=input("would you like to see if another number is prime? (y/n):")

main()

Upvotes: 2

Views: 41

Answers (3)

sergiof
sergiof

Reputation: 1

Try this

def is_prime(n):
    if n < 2:
        return False
    elif n % (n // 2) == 0:
        return True
    else:
        return False


def main():
    keep_going = 'y'
    while keep_going == 'y':
        n = int(input("Please enter a number to see if it's prime: "))
        if is_prime(n):
            print("It's prime")
        else:
            print("it's not prime")
        keep_going = input("would you like to see if another number is prime?(y/n):")


main()

Upvotes: 0

Amadan
Amadan

Reputation: 198388

You are not assigning the return value of is_prime(n) anywhere, and you are not testing this return value. if True: is unconditional execution. if False: is unconditional non-execution.

Instead, you want to test is_prime(n):

if is_prime(n):
    ...
else:
    ...

or

prime = is_prime(n)
if prime:
    ...
else:
    ...

The good news is - your is_prime function is correct, and does return False for non-prime numbers as it should :)

Upvotes: 1

angrysumit
angrysumit

Reputation: 221

Do this

while keep_going=='y': n=int(input("Please enter a number to see if it's prime: ")) if is_prime(n): print("It's prime") else: print("it's not prime") keep_going=input("would you like to see if another number is prime? (y/n):")

Upvotes: 1

Related Questions