Reputation: 31
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
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
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
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