阶乘的素因数分解

一、题目

整除问题_牛客题霸_牛客网 (nowcoder.com)

二、普通数字的素因数分解

        假如对n进行素因数分解。先利用素数筛法筛选出0~n范围内的全部素数。然后依次遍历这些素数,用n除以这些素数,直至无法整除。然后接着用下一个素数作为除数,直到n无法继续分解为止。

                                                n = p_1^{a_1} p_2^{a_2} \cdots p_k^{a_k}

map<int,int> result_list;
for(int i=0;i<prime_counts && prime[i]<=n;i++){
    int count=0;
    while(n%prime[i]==0){
        n/=prime[i];
        count++;
    }
    result_list[prime[i]]=count;
}

三、阶乘的素因数分解

以12!为例,12的素因数为2,3,5,7,11。

12 ! = 12×11×10×9×8×7×6×5×4×3×2×1 

我们先来找12!中有几个素因数2。先来发掘因数2的个数。2,4,6,8,10,12都是2的倍数,所以,它们中都至少有一个2作为因数,这就是6个。 

12!=1×2×3×(2×2)×5×(2×3)×7×(2×2×2)×9×(2×5)×11×(2×2×3)

然后我们发现2^2中还有一个2,因此只需看看有几个2^2即可。可以发现4、8、12分别含有一个2,这就有三个。

 然后接着看还有哪个1是没被统计到的,可以发现2^3中有个1是没被统计到的。

用公式表示实际上就是:

也就是: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ad_m1n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值