我知道这个问题被问了太多次,但我并不是在寻找最快的算法。我只想知道我的代码出错了,因为它有问题。
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))
如果我测试这个程序的大多数数字,它将返回正确的响应,但如果我检查任何平方数,它会说它是一个素数。那么任何建议我做错了什么?
答案 0 :(得分:4)
您将在循环的第一次迭代中立即返回...始终。
相反,只有当你知道它不是素数时才立即返回,否则继续前进:
def is_prime(number):
for i in range (2, 1+ int(math.sqrt(number))):
if number % i == 0:
return 0
return 1