Farhan T. Sami - 1 month ago 7
Python Question

# Program that checks if a number is prime number

Hello I have created this program to check if a number is a prime number. It works but for some reason says that 999 is a prime number. Where is my mistake. It would be great if someone explained. Thank You!

Here is my program:

``````number = raw_input('Enter a Number: ')
nnumber = int(number)
prime_range = range(2, nnumber)

for x in prime_range:

if nnumber % x == 0:
print 'Not a Prime Number!'
break

else:
print 'Prime Number!'
break
``````

Answer

Trace it. `x` starts with `2`, then tests `999 % 2`; it is `1`, so `else` is executed, "Prime number!" is printed, and loop is broken out of. Program ends.

Instead, you need to print "Prime number!" only when you tested all possibilities for `x`. The easiest way to do that is to unindent `else:` (and delete `break` there):

``````for x in prime_range:

if nnumber % x == 0:
print 'Not a Prime Number!'
break

else:
print 'Prime Number!'
``````

Python executes `else` of a `for` when `for` completes withoout being broken: exactly what you want.

Comments