计算n!中含有多少个质因子p

点击查看代码
#include<cstdio>
#pragma warning(disable:4996)

//非递归计算n!中含有多少个质因子p
int cal(int n, int p) {
	int ans = 0; //记录p的总个数
	//当n为0时结束
	while (n) {	
		ans += n / p; //ans=n/p+n/p^2+n/p^3+...
		n /= p;	//下一轮的n变为n/p
	}
	return ans;
}

//递归计算n!中含有多少个质因子p
int cal(int n, int p) {
	if (n < p) return 0; //n<p时1~n中没有质因子p,个数为0
	return n / p + cal(n / p, p); //n>=p时,等于1~n中p的倍数的个数n/p,再加上(n/p)!中质因子p的个数
}

posted @ 2022-09-29 21:07  zhaoo_o  阅读(11)  评论(0编辑  收藏  举报