對於n!的快速質因數分解


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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM