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
我的代码太简单了吗?它有什么东西不检查吗?
答案 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检查素数的详细说明。