利用了唯一分解定理,任何合数都可以拆分成有限个素数相乘。
ll k = i,flag = 0;
for(ll j = 2; j*j <= k; j++) //这里类似素筛,j一定素数
{
if(k % j == 0 )
{
// ans = ans*j; //求积则相乘一次
while(k%j == 0) //去重复的素因子,除到底
{
arr[j]++; //记录出现次数
k = k/j;
}
}
}
if(k) //除到最后原数一定会变为最后一个素数
arr[k]++;