题目描述:
对N!进行质因子分解。
题解:
N的取值范围到了1e4,那么如果硬算的话肯定会爆掉的。
但是我们知道N! = 1 * 2 * 3 * 4 * .... * N
,所以对N!进行质因子分解,从某种程度上讲就是对1~N分别进行质因子分解然后统计。
AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int p[100005];
int main()
{
int n,cnt = 0;
cin >> n;
for(int i = 2;i <= n;i++){
int temp = i;
for(int j = 2;j <= temp;j++){
if(temp % j == 0){
while(temp % j == 0){
temp /= j;
p[j]++;
}
}
}
if(temp > 1) p[temp]++; //如果temp本身就是质数
}
for(int i = 2;i <= 100005;i++){
if(p[i] != 0) cout << i << ' ' << p[i] << endl;
}
return 0;
}