开发者社区> 问答> 正文

如何使这个质数递归函数更有效

我有这个代码:

def has_divisors(n, i=2):
    """
    Check if a number is prime or not
    :param n: Number to check
    :param i: Increasing value that tries to divide
    :return: True if prime, False if not
    """
    if n <= 1:
        return False
    if i + 1 == n:
        return True
    if n <= 2 and n > 0:
        return True
    if n % i == 0:
        return False
    return has_divisors(n, i + 1)

这告诉一个数字是否是质数,问题是它可以检查一个数字是否是质数,直到+- 1500之后,它进入最大递归深度错误。有没有人知道如何使这段代码更有效(我不想要完全不同的代码,是的,我知道递归对这个函数来说不是一个好主意,但我必须使用它) 谢谢你! 问题来源StackOverflow 地址:/questions/59381761/how-to-make-this-recursion-function-for-prime-number-more-efficient

展开
收起
kun坤 2019-12-27 17:45:51 475 0
1 条回答
写回答
取消 提交回答
  • 我实际上通过增加一个条件使它更有效率:

    def has_divisors(n, i=2):
    """
    Check if a number is prime or not
    :param n: Number to check
    :param i: Increasing value that tries to divide
    :return: True if prime, False if not
    """
    if n <= 1:
        return False
    if i == n:
        return True
    if n <= 2 and n > 0:
        return True
    if i * i > n:
        return True
    if n % i == 0:
        return False
    return has_divisors(n, i + 1)
    

    感谢所有试图帮助我的人。

    2019-12-27 17:45:56
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载