代码之家  ›  专栏  ›  技术社区  ›  Marcus

在Python中查找素数

  •  0
  • Marcus  · 技术社区  · 7 年前

    is_prime() ,取整数n>1和返回 TRUE False 否则但当我输入2时,它总是返回 . 有什么方法可以纠正这个问题吗?

    def is_prime(x):
        if(x > 1):
            for i in range(2,x+1):
                if( x % i == 0):
                    return False
                else:
                    return True
        else:
            return False
    
    3 回复  |  直到 7 年前
        1
  •  2
  •   Andrew    7 年前

    SymPy 单元

    import sympy
    
    sympy.isprime(5)
    

    结果:

    True

        2
  •  1
  •   Nir Alfasi    7 年前

    两个问题:

    修复:更改 range(2,x+1) range(2, x)

    else 应与 for (只有在尝试所有数字并确保它们都不可除后,我们才返回true x

    固定代码:

    def is_prime(x):
        if x > 1:
            for i in range(2,x):
                if x % i == 0:
                    return False
            else:
                return True
        else:
            return False
    
        3
  •  0
  •   cdlane    7 年前

    虽然@alfasin的解是正确的(+1),但我发现 else 使理解变得更具挑战性。

    这个 for 循环尤其需要我重新阅读Python文档,因为大多数消息来源都说 其他的 方法 不间断 但这真的意味着 ,这在一个根本没有运行的循环中是正确的!

    这是我的返工删除 其他的 不严格需要的声明:

    def is_prime(x):
        if x > 1:
            for i in range(2, x):
                if x % i == 0:
                    return False
    
            return True
    
        return False