AcWing 197. 阶乘分解

给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果

#include<bits/stdc++.h>
#define N 1000000
using namespace std;
int p[N],c[N];
int n,cut;
int k[N],v[N];
void prime(int x)
{
    for(int i=2;i<=n;i++)
    {
        if(v[i]==0)p[++cut]=i;
        for(int j=1;j<=cut&&p[j]*i<=n;j++)
        {
            v[p[j]*i]=p[j];
            if(i%p[j]==0)break;
        }
    }
}
int main()
{
    cin>>n;
    prime(n);
    for(int i=1;i<=cut;i++)
    {
        int x=n;
        while(x)c[i]+=x/p[i],x/=p[i];
    }
    for(int i=1;i<=cut;i++) if(c[i])printf("%d %d\n",p[i],c[i]);
    return 0;
}

 

posted @ 2021-01-29 16:19  君与  阅读(65)  评论(0编辑  收藏  举报