【问题标题】:what is sum of largest divisor not divisible by a given prime不能被给定素数整除的最大除数之和是多少
【发布时间】:2020-05-19 12:11:48
【问题描述】:

Gine 2 数 N 和 M,将是 [1 到 n] 之间所有不能被 M 整除的数的最大除数之和。例如:- N=10,M=3,那么总和将为41 作为从 1 到 10 的最大除数是 [1, 2, 1, 4, 5, 2, 7, 8, 1, 10],它不能被 3 整除,其和为 41。

【问题讨论】:

    标签: math logic


    【解决方案1】:

    所以数字 1 到 N 的和是 N(N+1)/2。如果 M > N,这就是答案;否则,我们就高估了。我们多算了多少?我们多算了每个小于或等于 N 的 M 的倍数。让我们试着看看我们多算了多少。我们高估了可被 M 整除的项;它们的总和是 M + 2M + … + floor(N/M)*M。作为第一遍,我们可以减去这个总和,然后将总和除以 M 加回:

      M + 2M + … + floor(N/M)*M
    = M(1 + 2 + … + floor(N/M))
    = M*floor(N/M)*(floor(N/M) + 1)/2
    

    结果表达式:

    N(N+1)/2 + (1 - M)*floor(N/M)*(floor(N/M) + 1)/2
    

    这让我们离我们需要的地方更近了。我们只用 k 替换了 kM 形式的所有项。但是,如果 M^2

      N(N+1)/2
    + (1 - M)*floor(N/M)*(floor(N/M) + 1)/2
    + (1 - M)*floor(N/M^2)*(floor(N/M^2) + 1)/2
    + …
    + (1 - M)*floor(N/M^k)*(floor(N/M^k) + 1)/2
    

    您可以在 floor(N/M^k) = 0 时终止该过程,即一旦 M^k > N。您的示例:

      10(10+1)/2
    + (1 - 3)*floor(10/3)*(floor(10/3) + 1)/2
    + (1 - 3)*floor(10/9)*(floor(10/9) + 1)/2
    = 10*11/2
    + -2*3*4/2
    + -2*1*2/2
    = 55
    - 12
    - 2
    = 41
    

    您可以非常有效地循环计算它;终止条件是 M 的当前功率大于 N。

    【讨论】:

    • 如果M 不是素数,这种方法是否有效?
    猜你喜欢
    • 2012-11-10
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    相关资源
    最近更新 更多