python - Python 中的 is_prime(x) 程序有问题吗?

标签 python

我很抱歉问了这样一个新手问题,但我在用 Python 编写一个非常基本的程序来检查数字是否为素数时遇到了问题。

这是我的代码:

def is_prime(x):
    if x < 2:
        print ('Please enter a number >= 2.')
    else:
        if x == 2 or x == 3 or x == 5:
            return True
        if x == 4:
            return False
        for num in range (2, int(x/2)):
            if x % num == 0:
                return False
                break
            else:
                return True

但这对于所有奇数都返回 True;不仅仅是主要的。我不明白为什么。如果有人能指出我正确的方向,我将不胜感激! :)

最佳答案

您的代码仅检查 num % 2 并根据结果返回 TrueFalse。因此,它对于所有奇数都返回 True。如果循环没有遇到return False,您应该return True,请参阅代码。

def is_prime(x):
    if x < 2:
        print ('Please enter a number >= 2.')
    else:
        if x == 2 or x == 3 or x == 5:
            return True
        if x == 4:
            return False
        for num in range (2, int(x/2)):
            if x % num == 0:
                return False
        return True


>>> is_prime(11)
True
>>> is_prime(9)
False

P.S - 返回后不需要休息。 :)

关于python - Python 中的 is_prime(x) 程序有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18132953/

相关文章:

python - 如何在 Python 中使用 multiprocessing.pool 创建全局锁/信号量?

python - 使用 SQLAlchemy 反射(reflect)来自 postgres DB 的每个模式

python - 在生产模式下在 Flask 中启用 Debug模式

python - Keras max_pool3d 得到了预期的关键字参数 'data_format'

python列表到字典的数据流

python - django,属性更新模型实例

python - 使用 python pypdf 合并 PDF 并删除合并的文件

Python Bokeh 刻度标签

python - IsADirectoryError : [Errno 21] Is a directory: '/home/cali/Dropbox/'

python - 在 Windows 中使用 Protocol Buffer