首先必须明确,最多只有一个大于sqrt(n)的质因子,我们就可以进行优化,先枚举到 n / i ,即先找到sqrt(n) 中的所有质因子,最后再去判断是否存在大于sqrt(n)的质因子
void update(int tmp,map<int,int>&mymap)
{
for(int j=2;j*j<=tmp&&tmp!=1;j++)//质数从2开始,且若一个数为
{
if(tmp%j==0)//证明没有
{
while(tmp%j==0)
{
mymap[j]++;
tmp/=j;
}
}
}
if (tmp != 1) {//最后不为1,则是它大于sqrt(tmp)的质数,或者它本身就是质数
mymap[tmp]++;
}
}