设
表示区间
所有数的因子个数之和,那么求区间
的因子个数之和为
如何求
这是暴力循环的代码:
因为区间
中有
个数是
的倍数,即有
个数的因子包含
区间
中有
个数是
的倍数,即有
个数的因子包含
区间
中有
个数是
的倍数,即有
个数的因子包含
.....
int sum = 0;
for(int i = 1; i <= n; i ++){
sum += (n / i);
}
cout << sum << endl;
实际上就是求
总代码:
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define HelloWorld IOS;
int work(int x){
int sum = 0;
for(int i = 1; i <= x; i ++){
int l = i, r = (x / (x / i));
sum += (r - l + 1) * (x / i);
i = r;
}
return sum;
}
signed main(){
HelloWorld;
int l, r; cin >> l >> r;
cout << work(r) - work(l - 1) << endl;
return 0;
}



京公网安备 11010502036488号