zoukankan      html  css  js  c++  java
  • 计算n!中包含的质因子p的个数

    有公式:

    (num = lfloor frac{x}{p} floor + lfloor frac{x}{p^2} floor + lfloor frac{x}{p^3} floor + ....)
    (lfloor frac{x}{p^k} floor)相当于1到n中(p^k)的倍数的个数。公式中只累加一遍是因为(p^{k-1})这些已经在上一次被加过了。比如求8!中2的个数,1到8中2的倍数有2,4,6,8 = 8 / 2 = 4个,他们共有4个2;(2^2 = 4)的倍数有4,8 = 8 / 4 = 2个,相当于贡献了2个4 == 4个2,但上一轮4和8各贡献了一个2,因此本轮只算贡献了2个2(本轮算出来几个数就算贡献了几个p)。
    代码:

    LL cal(LL n,LL x){//计算 n! 中质因子 x 的数量
        LL num = 0;
        while(n){
            num += n/x;
            n = n/x;
        }
        return num;
    }
    
  • 相关阅读:
    WinCE 与通讯模块
    6174问题
    阶乘因式分解(一)
    三个数从小到大排序
    公约数和公倍数
    水仙花数
    韩信点兵
    5个数求最值
    求转置矩阵问题
    孪生素数问题
  • 原文地址:https://www.cnblogs.com/lipoicyclic/p/14757045.html
Copyright © 2011-2022 走看看