/**先打表,然后对n进行素因子分解**/
const int maxn=10000+5;
const ll mod=100000000;
bool is_prime[maxn];
int num[maxn];
vector<int> prime;
void get_prime()
{
memset(is_prime,true,sizeof(is_prime));
is_prime[0]=is_prime[1]=false;
for(int i=2; i<=maxn; i++)
{
if(is_prime[i])
{
prime.push_back(i);
for(int j=i*i; j<=maxn; j+=i)
{
is_prime[j]=false;
}
}
}
}
void get_num(int n,int d)
{
for(int i=0; i<prime.size(); i++)
{
while(n%prime[i]==0)
{
n/=prime[i];
num[i]+=d;
}
if(n==1) break;
}
}
2.将n直接分解
typedef long long ll;
const int maxn=100000;
vector<int> la;
int num_time[maxn+1];
void get_num(int n){
memset(num_time,0,sizeof(num_time));
for(int i=2;i*i<n;i++){
if(n%i==0){
la.push_back(i);
while(n%i==0){
n/=i;
num_time[i]++;
}
}
}
if(n>1){
la.push_back(n);
num_time[n]++;
}
}