阶乘的素因数分解

一、题目

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

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

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

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

map result_list;
for(int i=0;i

三、阶乘的素因数分解

以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是没被统计到的。

用公式表示实际上就是:

阶乘的素因数分解_第1张图片

也就是: 

阶乘的素因数分解_第2张图片

你可能感兴趣的:(算法)