AcWing 197. 阶乘分解 质因数分解

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 197. 阶乘分解 质因数分解相关的知识,希望对你有一定的参考价值。

一个数的阶乘的质因数p的个数:
如:5!=2335;
3==5/2+5/4;

int temp=0;
int n1=n;
ll t=pri[i];//t可能再乘一次 刚好爆int 
while(n1>=t)
{
	temp+=n1/t;			
	t*=pri[i];			
}
ans[i]=temp;

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define mem(a,x) memset(a,x,sizeof(a));
//======================
const int N=1e6+10;
int v[N],pri[N],ans[N];
int cnt=0;
int n;
void prime()
{
	mem(v,0);
	mem(pri,0);
	for(int i=2;i<=sqrt(n);i++)
	{
		if(!v[i])
		{
			pri[cnt++]=i;
			for(int j=i;j*i<=n;j++)
			{
				v[j*i]=1;
			}
		}
	}
	for(int i=sqrt(n)+1;i<=n;i++)
	{
		if(!v[i]) pri[cnt++]=i;
	}
}
void solve()
{
	mem(ans,0);
	for(int i=0;i<cnt;i++)
	{
		int temp=0;
		int n1=n;
		ll t=pri[i];//t可能再乘一次 刚好爆int 
		while(n1>=t)
		{
			temp+=n1/t;			
			t*=pri[i];			
		}
		ans[i]=temp;
		cout<<pri[i]<<" "<<ans[i]<<endl;
	}
}
int main()
{
	cin>>n;
	prime();
	solve();
	return 0; 
}

以上是关于AcWing 197. 阶乘分解 质因数分解的主要内容,如果未能解决你的问题,请参考以下文章

AcWing 197. 阶乘分解 (筛法)打卡

197. 阶乘分解数论

第五章 数学知识

197. 阶乘分解数论

CH3101 阶乘分解

ACwing(基础)--- 质数和分解质因数