【问题标题】:Prime function doesn't work in a composite number (4)素数函数在合数中不起作用 (4)
【发布时间】:2020-12-17 21:24:18
【问题描述】:

我运行了以下代码:

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 是之前给函数的。 我运行它并输入 number=4,但它返回 Prime 你能帮助我吗?我几个小时前才开始学习 python。

【问题讨论】:

  • 请修正问题中的代码缩进。目前尚不清楚哪些代码应该是函数的一部分,哪些不是。
  • range(2, number//2)2 变为number//2 - 1,这意味着它不包括数字2。无论如何,您应该学习如何使用调试器来逐行查看正在发生的事情。
  • prime 已经是bool;没有理由调用 bool 从中获取布尔值。
  • 您的函数确实没有理由(除了构造不佳的赋值之外)返回用作正确布尔值代理的str 变量。只返回prime 本身,而不是根据其值选择的字符串。

标签: python function primes


【解决方案1】:

首先,让我们明确这是一个编程问题,而不是 Python 问题——您的算法在任何计算机语言中都会失败。结合 cmets 中的所有建议,再加上一些额外的优化,我们得出了如下结论:

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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 2017-08-20
    相关资源
    最近更新 更多