Help on is_prime


#1

<PLEASE USE THE FOLLOWING TEMPLATE TO HELP YOU CREATE A GREAT POST!>

<Below this line, add a link to the EXACT exercise that you are stuck at.>
https://www.codecademy.com/courses/learn-python/lessons/practice-makes-perfect/exercises/isprime?action=lesson_resume

<In what way does your code behave incorrectly? Include ALL error messages.>
is_prime(9) returns True, should be False.

<What do you expect to happen instead?>

```python

Replace this line with your code.

def is_prime(x):
	if x > 3:
		for n in range(2,x):
			if x % n == 0:
				return False
				break
			else:
				return True
	elif x == 2 or x == 3:
		return True
	else:
		return False
 
print is_prime(9)

There’s been some issues with the forum displaying different indentations for the code.

The logic behind this is that it first checks if x > 3. Assuming that’s true, for each number n in [2, x-1] it checks whether x is perfectly divisible by n.

In the case of is_prime(9), first 9 > 3 so for each number n in [2, 8] it should test whether x % n = 0. Since the number 3 falls within this range, I would expect the function to return False yet it gives True for some reason.

Thoughts?

edit: Figured it out! Seems like when the first n returns True it stays that way and stops the loop.

Changed the indents:

def is_prime(x):
	if x > 3:
		for n in range(2,x):
			if x % n == 0:
				return False
		else:
			return True
	elif x == 2 or x == 3:
		return True
	else:
		return False
 
print is_prime(9)

How do I delete the post?


#2

break is unreachable after return. Just remove it.

There should not be an else branch in the if statement. Let the loop finish.


#3

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.