测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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行删去,输出不变(    )。

选项(单选)

上一题 下一题