检查一个数是否为素数的程序 [英] Program that checks if a number is prime number
问题描述
你好,我创建了这个程序来检查一个数字是否是素数.它有效,但出于某种原因说 999 是一个质数.我的错在哪里.如果有人解释,那就太好了.谢谢!
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!
这是我的程序:
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
推荐答案
追踪.x
以2
开头,然后测试999%2
;它是 1
,所以 else
被执行,质数!"被打印,并且循环被打破.程序结束.
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.
相反,您需要打印质数!"仅当您测试了 x
的所有可能性时.最简单的方法是取消缩进 else:
(并在那里删除 break
):
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 执行 for
的 else
当 for
完成而没有被破坏:正是你想要的.
Python executes else
of a for
when for
completes withoout being broken: exactly what you want.
这篇关于检查一个数是否为素数的程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!