Is_prime

I add new “elif” and it works)
thanks

I’ve tried a similar solutions for hours just to realize that 9 was retrieving True because the “else” statements was with the same indentation of the “if” why does it change the result so much?

1 Like

Indentation matters so much because it shows python the order of operations in which to execute the code and also for if/else statements indentation tells the interpreter what function or variable the if and else are checking. :slight_smile:

1 Like

i don’t understand how the code works,while x=2.can you explain it for me?if you are wiling to.

I tried many times but still fails !!!

def is_prime(x):

if x<2:
return False

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

elif x==2:
return True
else:
return False

How to solve it !!!

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

Try this. Should work.

Finally it works, Thanks for help,

but could you explain this line, cuz I don’t understand it

if n + 1 == x:
return True

Let’s take the is_prime() function without if n + 1 == x: statement.

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

If we take x = 9 and run it through the above function, it will return True even though 9 is not a prime number. Because when ‘n’ is having value of 2 the else block of the nested if statement (if x % n == 0:) will be executed.

9 % 2 == 1

But we only need the function to return True when the loop is running for the last time (which is ‘n’ having its final value. In the above example it’s 8).

You can check that ‘n’ is having its final value by using if n + 1 == x:.

I’m not fluent in English so I’m sorry for my English. Hope you understand my explanation.

Thanks very much for help

Can you explain why the else statement have to be outside of the loop? I got the same idea but I put the else inside the for loop and it’s caused an error

Hi,
It was in one of the sections prior to this in the course “for else loop statements”

Hi everybody,

I was cheking the codes for this task and I figure that the best way is not to use looping (for or while) because it will not run for long numbers. The memory will not let.

Try this way and make a raw_input to use the function for big big numbers

def is_prime(x):
if x==1 or x==-1:
return False
elif x==2 or x==3 or x==5 or x==7:
return True
elif x%2==0 or x%3==0 or x%5==0 or x%7==0:
return False
else:
return True