【问题标题】:Find total number of Equal Partition查找相等分区的总数
【发布时间】:2016-10-17 18:01:01
【问题描述】:

对于一个数 N,f(N) = 将 N 分成相等部分的部分的总数。

例如 如果给定的数字是 4,则相等的分区将是:

{1,1,1,1} ->总部分=4

{2,2} -> 总部分=2

{4} -> 总部分=1

所以,4 等分的分区总数为 7。

我在练习面试问题中得到了这个问题。想知道如何通过编程来解决这个问题。

【问题讨论】:

标签: integer partition number-theory sieve


【解决方案1】:

这个问题本质上是询问数字 N 的 divisor sum function,因为 N 的每个不同除数 d 可用于将 N 分成相等的部分(N / d 值 d 的部分,或 d 的 d 部分)值 N / d,以您喜欢的为准)。由于 N 的任何除数 d 的 N / d 只是另一个除数,因此您可以简单地将除数本身相加,而不是将 N / d 相加。

因此,您需要选择一种计算给定数字 N 的除数的多种方法。例如,RosettaCode 有 a section on computing the proper divisors of a number,这几乎就是您所需要的(您只需将 N 添加到除数集,因为适当的除数不包括 N 本身)。一旦您必须设置除数,您就可以计算所需的结果(或在计算时对每个除数求和,这样就无需存储除数)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2015-12-19
    • 1970-01-01
    相关资源
    最近更新 更多