繁体   English   中英

求一个大因子数的除数之和?

[英]Finding the Sum of divisors of a big factorial number?

我试图想出一个有效的方法来列出一个大因子的所有除数。 我们说1000! 蛮力是不可能的。 有效的方法吗? 我需要处理它们,即找到它们用于编程挑战的总和。

  1. 找到每个数字<= 1000的素数因子分解。我会将其存储为素数字典 - >幂。 例如,对于24 {2: 3, 3: 1}这样的单个数字{2: 3, 3: 1}因为24是2**3 * 3**1
  2. 找到1000!的素因子化1000! 这是数字<= 1000的字典的组合,通过对每个键(素数)的所有值求和来组合。
  3. 然后你可以在这个页面上使用公式14,就像@AakashM已经说过的那样。

以下是有效解决方案的步骤:

  1. N! 可以表示为: - n! =(a1 ^ p1)(a2 ^ p2)x ...(ak ^ pk)。

    其中ak是小于n的素数除数,pk是可以除n的最高幂。

  2. 通过筛子找到素数和最高功率可以很容易地找到:

     countofpower = [n/a] + [n/a^2] + [n/a^3] +...... or ` while (n) { n/ = a; ans += n } 
  3. 因子数= (ans1 +1)*(ans2 +1)*....(ansk +1)

  4. 计算完这最后一步后的总和是:

     SUM = product of all (pow(ak,pk+1)-1)/(ak-1); ex = 4! 4! = 2^3 * 3^1; count of factors = (3+1)*(1+1) = 8 (1,2,3,4,6,8,12,24) sum = ( 1 + 2 + 4 + 8)*(1 + 3) = 60. 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM