题解里都出现了一段代码,我对此感到疑惑
如下
for(int i=1; i<=siz; i++) for(int j=i+1; j<=siz; j++) if(d[j]%d[i]==0) cnt[i]+=cnt[j]; // 摘自第一篇题解
即枚举小因数因数去更新倍数的计数,
但一个数的因数个数上界不是 O(ai) O(\sqrt {a_i})O(ai)的吗
这样不就是 O(ai∗ai)=O(ai)=1012O(\sqrt {a_i} * \sqrt {a_i}) = O( {a_i}) = 10^{12}O(ai∗ai)=O(ai)=1012的吗。
因为我太蒟了,还请大佬解答/kk