AcWing 197. 阶乘分解
原题链接
中等
在学组合数4的时候不会算数基本定理,所以刷的题,跟学的知识点
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int primes[N], cnt;
bool st[N];
void get_primes(int n)
{
for (int i = 2; i <= n; i ++ )
{
if (!st[i]) primes[cnt ++ ] = i;
for (int j = 0; primes[j] <= n / i; j ++ )
{
st[primes[j] * i] = true;
if (i % primes[j] == 0) break;
}
}
}
int main()
{
int n;
cin >> n;
get_primes(n);
for (int i = 0; i < cnt ;i ++ )
{
int res = 0, t = n;
while (t) res += (t / primes[i]), t /= primes[i];
printf("%d %d\n", primes[i], res);
}
return 0;
}