大意就是给出一个区间,求区间内所有数的因数的和
题目:https://codeforces.com/group/mey3UXMrvB/contest/254921
思路,对r求根,然后枚举x (2到根),看区间有多少数字是x的倍数,在这个过程中,如果x的另一半是小于k的 那么不用管,大于k的就加上
然后枚举区间内各个数字,1和本身,1在之前没有处理过,要加上。但是本身如果小于k,说明这个本身以前处理过,如果大于k,才对答案有影响
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a,b;
int main(){
scanf("%lld%lld",&a,&b);
ll k=sqrt(b),ans=0;
for(ll i=2;i<=k;i++){
for(ll j=(a-1)/i+1;j*i<=b;j++){
ans+=i;
if(j>k)ans+=j;
}
}
for(ll i=a;i<=b;i++){
ans++;
if(i>k)ans+=i;
}
printf("%lld",ans);
return 0;
}