质数检查器为什么说9是素数?

时间:2016-11-16 16:00:40

标签: python primes

print "Type a number"
num = int(raw_input("> "))

if num % 2 == 0:
    print "This is not a prime number"

else:
    print "This is a prime number"

当我输入' 9'它说这是一个素数,它不是:

Type a number
> 9
This is a prime number

我的代码太简单了吗?它有什么东西不检查吗?

4 个答案:

答案 0 :(得分:4)

你只是通过检查它是否可以被2整除来检查它是否是偶数。但是9可以被3整除,所以你也需要检查它。最简单的方法是检查所有数字,直到你要检查素数的数字的平方根。

答案 1 :(得分:3)

你在这里所做的就是检查一个数字是否可以被2整除。由于9/2 = 4.5,它不能被2整除,因此转到了else子句。

以下是您可能需要的简明工作版本:

def is_prime(a):
    return all(a % i for i in xrange(2, a))

答案 2 :(得分:2)

要检查数字是否为素数,您必须验证是否可以通过范围[2,sqrt(n)]中的任何数字进行验证。

以下代码完全相同:

CREATE PROCEDURE [dbo].[spInsert]
    @name nvarchar(128),
AS
    insert into NameIdentifier 
    ( Name, Identifier)
    values
    ( @name, NEWID());

SELECT @new_identity = SCOPE_IDENTITY()
SELECT * FROM NameAge where Id = @new_identity  

这种方法适用于少数,但如果n是真正的大数,那么你需要更快的东西。在这种情况下,您可以使用Miller–Rabin primality测试以一定的概率检查素数。

答案 3 :(得分:1)

你正在检查一个给定的数字是否是偶数,9是不是这样你的代码打印出来“这是一个素数”

请查看this Stackoverflow问题,了解如何使用Python检查素数的详细说明。