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