【问题标题】:How to handle negative cases for prime check in Python?如何在 Python 中处理素数检查的否定情况?
【发布时间】:2016-08-02 14:56:44
【问题描述】:

关于“xrange”函数——(Python3 中的“range”)当我在循环中进行否定检查时会发生什么?在这种情况下,可以将负数视为边缘情况,但始终返回 None。有什么见解吗?

【问题讨论】:

    标签: python-3.x if-statement primes


    【解决方案1】:

    问题是您正在检查 for 循环内的数字是否为负数。例如,如果 x=-3,那么您正在尝试在 range(2,-1) 中运行一个 for 循环,该循环为无。所以 for 循环永远不会运行,因此返回 True。

    def isprime(x):
     if x<=0:
       return(False)
     for a in range(2,(x//2)+1):
       if(x%a==0):
         return(False)
     return(True)
    

    【讨论】:

      【解决方案2】:

      根据小学的定义,素数仅定义为正数,因此您的函数应为每个负数返回False,例如:

      def isprime(x):
          if x <= 0:
              return False
          for a in range(2, (x//2)+1):
              if x % a == 0:
                  return False
          return True
      

      话虽如此,可以扩展定义(就像在数学中的某些领域所做的那样),以包括负数(更多讨论参见herehere)。在这种情况下,对于每个负数 -n,当 n 是素数时,-n 是素数。因此,您的代码可能类似于:

      def isprime(x):
          if x <= 0:   # or use any |abs| method you'd like, like numpy's
              x = -x
          for a in range(2, (x//2)+1):
              if x % a == 0:
                  return False
          return True
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-28
        • 2021-06-11
        • 2012-12-12
        相关资源
        最近更新 更多