Python 引发数组困惑

标签 python math primes

我有一个关于这个Python素数检查函数的小问题。这确实很愚蠢,但是 for n in [2] 中的 [2] 是做什么的?

我理解检查素数的公式,没问题,但无法弄清楚 [2] 的用途。

来自:http://en.wikibooks.org/wiki/Python_and_Math

from math import ceil
def prime(input):
    for n in [2] + range(3, int(ceil(input**0.5)), 2):
        if input%n == 0:
            return False
    return True

感谢您回答我的愚蠢问题。

最佳答案

这只是列表添加:

>>> range(3, 10, 2)
[3, 5, 7, 9]
>>> [2] + range(3, 10, 2)
[2, 3, 5, 7, 9]

即他们想要检查是否能被 2 整除,但显然不需要检查是否能被 4、6、8 整除……因此,通过此操作,它将 2 “前置”到奇数列表的开头。

顺便说一句,这个函数被破坏了 - 它返回 prime(2) == Falseprime(1) == True 这两个都是错误的。

关于Python 引发数组困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173049/

相关文章:

python - Tensorflow retrain.py 找不到图像目录错误

javascript - 处理字符串中的负数

java - 计算素数(新手)

primes - 校验大量的质数? (用于验证)

math - float 学有问题吗?

c# - 如何生成用户定义数量的素数?

python - 类型错误 : unsupported operand type(s) for/: 'instance' and 'instance' and __truediv__/__div__ differences?

python - 如何创建像 top unix 命令这样的 python shell 脚本?

python - 在 Python 2.7 中格式化

c# - 如何在Unity3d中找到两个Vector3之间的点X