Python 素数函数不';t在复合数(4)中工作
我运行了以下代码:Python 素数函数不';t在复合数(4)中工作,python,function,primes,Python,Function,Primes,我运行了以下代码: def isprime(number): prime=True result="" for i in range(2, number//2): if number%i==0: prime=False break if(bool(prime)): result="Prime" else: result=&
def isprime(number):
prime=True
result=""
for i in range(2, number//2):
if number%i==0:
prime=False
break
if(bool(prime)):
result="Prime"
else:
result="Not prime"
return result
之前已为函数指定了编号。
我运行它并输入number=4,但它返回Prime
你能帮助我吗?我几个小时前才开始学习python。首先,让我们明确这是一个编程问题,而不是python问题——您的算法在任何计算机语言中都会失败。结合评论中的所有建议,再加上一些额外的优化,我们得出如下结论:
def isprime(number):
if number < 2:
return False
if number % 2 == 0:
return number == 2
for divisor in range(3, int(number ** 0.5) + 1, 2):
if number % divisor == 0:
return False
return True
if isprime(int(input("Enter a number: "))):
print("Prime")
else:
print("Not prime")
def isprime(数字):
如果数字小于2:
返回错误
如果数字%2==0:
返回编号==2
对于范围(3,int(数字**0.5)+1,2)内的除数:
如果数字%除数==0:
返回错误
返回真值
如果iPrime(int(输入(“输入一个数字”):
打印(“素数”)
其他:
打印(“非素数”)
请修复问题中的代码缩进。不清楚什么代码应该是函数的一部分,什么不应该是函数的一部分。范围(2,number//2)
从2
到number//2-1
,这意味着它不包括number2
。无论如何,您应该学习如何使用调试器逐行查看正在发生的事情。prime
已经是一个bool
;没有理由调用bool
从中获取布尔值。也没有理由(除了构造糟糕的赋值)让函数返回str
变量作为正确布尔值的代理。只需返回prime
本身,而不是根据其值选择的字符串。