A27221. #include <iostream> #include <cmath> #include <vector> #include <algorithm> using namespace std; long long solve1(int n) { vector<bool> p(n+1, true); vector<long long> f(n+1,0),g(n+1,0); f[1]= 1; for…
判断题
困难
知识点
题目描述
#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
long long solve1(int n) {
vector<bool> p(n+1, true);
vector<long long> f(n+1,0),g(n+1,0);
f[1]= 1;
for (int i = 2; i*i <= n; i++) {
if (p[i]) {
vector<int> d;
for (int k = i;k <=n; k *= i)d.push_back(k);
reverse(d.begin(),d.end());
for (int k:d) {
for (int j =k; j<=n;j += k) {
if (p[j]) {
p[j]= false;
f[j]= i;
g[j]= k;
}
}
}
}
}
for (int i = sqrt(n)+ 1; i <= n; i++) {
if (p[i]) {
f[i]= i;
g[i]= i;
}
}
long long sum = 1;
for (int i = 2; i <= n; i++) {
f[i]= f[i / g[i]]*(g[i]* f[i]- 1)/(f[i]- 1);
sum += f[i];
}
return sum;
}
long long solve2(int n) {
long long sum = 0;
for (int i= 1; i <= n; i++) {
sum += i*(n / i);
}
return sum;
}
int main() {
int n;
cin >> n;
cout << solve1(n)<< endl;
cout << solve2(n)<< endl;
return 0;
}设输入的n是不超过1000000的自然数,完成下面的判断题和单选题:
将第15行删去,输出不变( )。
选项(单选)
答案解析
详细答案解析为会员权益,按每日次数查看。
开通 / 升级会员
上一题
下一题