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. 阶乘分解 质因数分解的主要内容,如果未能解决你的问题,请参考以下文章