N!的階乘的質因數分解
對於N的階乘 比如8!
我們要算其中一個質因數出現次數
我們注意到
8!=1 2 3 4 5 6 7 8
1 1 1 1 2的倍數出現的次數8/2=4
1 1 4的倍數出現的次數(8/2)/2=2
1 8的倍數出現的次數(8/2/2)/2=1
所以8!階乘質因數分解有1+2+4=7個2
那么我們只要先打出1~N的素數表
然后枚舉每一個素數進行上述操作就能快速對N!進行質因數分解了
附上計算某個質因數數量的代碼
int cal(int n, int p) //n!有幾個p質因數
{
if (n == 0)
return 0;
int ans = 0;
while (n)
{
ans += n / p;
n /= p;
}
return ans;
}