Python - 检查它是否是素数

时间:2016-09-19 12:08:21

标签: python

我知道这个问题被问了太多次,但我并不是在寻找最快的算法。我只想知道我的代码出错了,因为它有问题。

import math

def is_prime(number):
    for i in range (2, 1+ int(math.sqrt(number))):
        if number % i == 0:
            return 0
        else:
            return 1

choice = int(input("Check if it's prime: "))
if is_prime(choice):
    print ("{} is a prime number".format(choice))
else:
    print ("{} is not a prime number".format(choice))

如果我测试这个程序的大多数数字,它将返回正确的响应,但如果我检查任何平方数,它会说它是一个素数。那么任何建议我做错了什么?

1 个答案:

答案 0 :(得分:4)

您将在循环的第一次迭代中立即返回...始终。

相反,只有当你知道它不是素数时才立即返回,否则继续前进:

def is_prime(number):
    for i in range (2, 1+ int(math.sqrt(number))):
        if number % i == 0:
            return 0
    return 1