# FAQ: Learn Python - Practice Makes Perfect - factorial FAQ: Learn Python - Practice Makes Perfect - is_prime

#1

This community-built FAQ covers the “s_prime” exercise in Codecademy’s lessons on Python.

## Join the Discussion. We Want to Hear From You!

Agree with a comment or answer? Like () to up-vote the contribution!

Want to take the conversation in a totally different direction? Join our wider discussions.

Found a bug? Report it!

Have a question about your account, billing, Pro, or Pro Intensive? Reach out to our support team!

None of the above? Find out where to ask other questions here!

#2

Not seeing your question? It may still have been asked before – try () in the top-right of this page. Still can’t find it? Ask it below by hitting the reply button below this post ().

## Other FAQs

• This list will contain other frequently asked questions that aren’t quite as popular as the ones above.
• This FAQ is built and maintained by you, the Codecademy community – help yourself and other learners like you by contributing!
split this topic #3

2 posts were split to a new topic: Why does this Return False When x = 9?

split this topic #4

2 posts were split to a new topic: Is prime - return indent

split this topic #5

2 posts were split to a new topic: Prevent the return False from breaking the loop

#6

hey bros I don’t like this I am pretty sure there is an additional step being made which is not necessary and shouldn’t be there.

def is_prime(x):
if x < 2:
return False
else:
for n in range(2, x-1): #I MEAN THIS LINE RIGHT HERE
if x % n == 0:
return False
return True

print is_prime(13)
print is_prime(10)

Why is there the (-1) I don’t think it should be there. Or I am just tired and it still counts it from 0… like. Range(2)… 0, 1 and then stop at x-1 for instance 10 which would mean 9, numbers 2 to 9 that is… 1, 2, 3, 4, 5, 6, 7, 8, 9… oh god damnit I see now, somebody please confirm I understand. Wait no need to I get it.

#7

why does is_prime(3) equal none?

#8

and actually why it isnt working right?

#9

None means no value is returned. If x is greater then 2, the only possible return value is True. How should false be returned for values like 9 and 10 for example?

#10

I don’t understand the solution they have given:

def is_prime(x):
##if x < 2:
####return False
##else:
####for n in range(2, x-1):
######if x % n == 0:
########return False
####return True

For is_prime(2) it somehow gives True, yet 2 /2 =1, so 2 % 2 == 0, which should return False. What am I missing?
Also, in the range function why is it not range(2, x) as range functions don’t include the number after the comma? I assume no number divided by the previous number gives % == 0 (except possibly 2), but still it seems more certain to use x.

#11

i assume by so 2 % 2 == 0 you mean the if condition? Excepts the code never gets there, the for loop never makes any iteration, given the loop condition is false from the start

never understood that, range(2, x) works just as well.

#12

Great thanks, of course there is no n in range(2,1) or range(2,2), so it ignores the iteration. Thanks for your help.

#13

Why does the following code fail at -10?

def is_prime(x):
if x == 0 or x == 1:
return False
elif x == 2:
return True
else:
for number in range(2, x):
if x % number == 0:
return False
return True

#14

negative numbers can’t be prime numbers, so for negative numbers false must be returned

How do you think your code is currently handling that?

1 Like
#16

None indicate the absence of a return value, thus no return keyword in your function is reached. Why do you expect False?

1 Like
#18

I’m stuck. This is what I have:

def is_prime(x):
if x < 2:
return False
for n in range(2, x - 1):
if x % n == 0:
return False
return True
#19

Your function fails on is_prime(2). It returns None when it should return True.

None indicates the absence of a return value, so for x=2, we don’t get a return value. Which return value did you expect? And why doesn’t your code get there?

#20

Hi, why does is_prime(15) return True in the solution code, while 15 is not a prime number?

#21

Can’t replicate issue, using the solution code:

def is_prime(x):
if x < 2:
return False
else:
for n in range(2, x-1):
if x % n == 0:
return False
return True

print is_prime(13)
print is_prime(10)
print is_prime(15)

i get false for 15, as expected

#22

what is false about my code:

def is_prime(x):
for e in x:
while e==range(2,x-1):
if e % n==0:
return False
else:
return True
print is_prime(17)
print is_prime(4)
print is_prime(1)