检查一个数是否为质数的程序

Program that checks if a number is prime number

你好,我创建了这个程序来检查一个数字是否是素数。它有效,但出于某种原因说 999 是质数。我的错误在哪里。如果有人解释就太好了。谢谢!

这是我的程序:

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

如果一个数是素数,这意味着除了 1 和它本身之外没有任何数能整除它。这意味着你需要检查它下面的每个数字才能说这个数字是素数。

在您的代码中,无论数字有多大,您都会在第一次迭代时退出循环。

追踪它。 x2 开始,然后测试 999 % 2;它是1,所以else被执行,"Prime number!"被打印,循环被打破。节目结束。

相反,只有当您测试了 x 的所有可能性时,您才需要打印 "Prime number!"。最简单的方法是取消缩进 else:(并删除 break):

for x in prime_range:

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

else:
    print 'Prime Number!'

Python 在 for 完成且未被破坏时执行 forelse:正是您想要的。

判断有问题,只能是1或者素数能被自己整除。你判断的是只有2出来的整数不是质数,你应该用双循环来做条件判断

您只检查第一次迭代。无论它是否为素数,它都会退出循环,因为其中一个部分,即 'if' 或 'else' 将执行导致循环中断。逻辑是检查从 2 到 (number/2) 的整个数字范围,如果它在某个点将数字相除,则它不会是素数。如果在遍历整个循环后循环退出,则它是一个素数。希望你现在就能做到。谢谢!

您现有的代码只会每次测试您输入的数字是否可以被 2 整除然后跳出循环,无论哪种方式。您必须检查所有较低的值,并且只有在确实发现它不是质数时才退出:

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

prime = True

for x in prime_range:
    if nnumber % x == 0:
        prime = False
        break

if prime:
    print 'Prime Number!'
else:
    print 'Not a Prime Number!'