高效求解区间约数

Posted yinchen-one

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高效求解区间约数相关的知识,希望对你有一定的参考价值。

#include<cstdio>
using namespace std;
 
typedef long long LL;
LL ac(int n)
{
    LL ans=0;
    for(int i=1,temp;i<=n;i=temp+1)
    {
        temp=n/(n/i);
        ans+=(n/i)*(temp-i+1);
    }
    return ans;
}
 
int main ()
{
    int n,t;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        printf("%lld
",ac(n));
    }

    return 0;
}

 

以上是关于高效求解区间约数的主要内容,如果未能解决你的问题,请参考以下文章

UVA294DIvisors(唯一分解定理+约数个数)

HDU - 4630 No Pain No Game(离线线段树)

Python版本的常见模板 数论

求约数个数的和

约数之和

约数和(神奇的数列优化)