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
,这意味着它不包括number
2
。无论如何,您应该学习如何使用调试器逐行查看正在发生的事情。
prime
已经是一个
bool
;没有理由调用
bool
从中获取布尔值。也没有理由(除了构造糟糕的赋值)让函数返回
str
变量作为正确布尔值的代理。只需返回
prime
本身,而不是根据其值选择的字符串。