文章
99
粉丝
120
获赞
8
访问
109.6k
#include <iostream>
using namespace std;
int main() {
long long int n, count = 0;
cin >> n;
for (long long int i = 1; i <= n / 2; ++i) {
//计算[1,n/2]各个约数出现的次数(n/i),结果*i就是约数i的总和
count += n / i * i;
}
//计算[n/2+1,n]各个约数出现的次数
//这个范围内的约数只出现一次,因此用等差数列求和公式计算
count += (n - n / 2) * (n / 2 + 1 + n) / 2;
cout << count << endl;
}
登录后发布评论
暂无评论,来抢沙发