美文网首页算法
约数-倍数法

约数-倍数法

作者: dachengquan | 来源:发表于2020-08-04 18:16 被阅读0次

求1~n每个数的正约数集合-倍数法

以d为正约数的数有d,2d,3d,4d....\lfloor n/d \rfloor*d从1到n扫描每个数,将每个数的倍数的正约数集合都加入d。
时间复杂度:O(N+N/2+N/3+..+N/N) = O(N \log N)

vector<int> a[50010];
void get_div(int n){
    for(int i = 1;i<=n;i++){
        for(int j = 1;j<=n/i;j++)
            a[i*j].push_back(i);
    }
}

相关文章

网友评论

    本文标题:约数-倍数法

    本文链接:https://www.haomeiwen.com/subject/twojrktx.html