【问题标题】:How can a function return if a number is a factor of another?如果一个数是另一个数的因数,函数如何返回?
【发布时间】:2019-05-22 13:37:13
【问题描述】:

我正在为 Python 3.7.3 编写一个函数,用于测试一个数字是否是另一个数字的因数。

我尝试在互联网上进行研究,以了解如何编写一个函数来测试分解两个未知实数的有效性。最后我偶然发现了因式分解和可除性之间的区别,这让我有点感兴趣。

def is_factor(f, n):
    """This function returns if f, a real number, is a factor of another
    real number n."""
    while f * f <= n:
        if f % n == 0:          
            f /= n
            #return True?
        else: f += 1 #return False?

print(is_factor(1, 15))

该函数似乎可以工作,因为 Python 返回 None,仅此而已。我希望该函数返回 True 或 False 解决方案。代码中一定有一些逻辑错误。任何反馈表示赞赏。

【问题讨论】:

  • 你希望你的函数在哪里返回真值或假值?
  • 您介意添加一些关于您的代码草稿的解释吗?除了没有地方返回 True 或 False 之外,我似乎看不出它背后的数学推理。
  • 每个非零实数都是其他实数的因数,实数除法没有其他障碍。当您想要更简单的东西时,为什么要复制粘贴(部分)分解算法(查找所有质因数)?
  • 也许你忘了做某事there
  • 值得描述真正的问题促使你做出is_factor

标签: function math numbers boolean factoring


【解决方案1】:

如果您正在处理整数,请使用:

def is_factor(f, n):
    return n%f==0

如果您处理的是实数,上面的代码可以工作,但对浮点不精确非常敏感。相反,您可以将n 除以f,然后在四舍五入后查看是否返回n

def is_factor(f, n, e):
    return abs(round(n/f)*f-n)<e

【讨论】:

  • 感谢您为我的功能提供快速解决方案。尽管您的两个答案都值得注意,但我本可以用不同的措辞来表达,因为它们提出了明智的含义。关于其他回复:问题是故意抽象的,所以没有明确的解决方案。
  • @NationalRex22 我不确定我是否理解您的评论。你会有什么不同的做法?关于“这个问题是故意抽象的,所以没有明确的解决方案”:这个问题对我来说非常清楚和具体:你问如何编写一个返回 True 的函数,当一个数字 f 是一个数字n,否则为 False。这个问题有一个明确的解决方案。
猜你喜欢
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 2010-09-15
相关资源
最近更新 更多