Notice: Undefined index: name in /usr/www/lib/views/home/viewtitle.html on line 188
-阅读程序 第 17 题
#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;
}
假设输入的x是不超过65535的自然数,完成下面的判断题和单选题
● 判断题
第 1 题 将第15 行删去,输出不变( )
第 2 题 当输入为“10”时,输出的第一行大于第二行。( )
第 3 题 当输入为“1000”时,输出的第一行与第二行相等( )
● 单选题
第 4 题 solve1(n)的时间复杂度为( )
A. $O(nlog2n)$
B. $O(n)$
C. $O(nlogn)$
D. $O(nloglogn)$
第 5 题 solve2(n)的时间复杂度为( )
A. $O(n^2)$
B. $O(n)$
C. $O(nlogn)$
D. $O(n\sqrt(n))$
第 6 题 输入为“5”时,输出的第二行为( )

解答部分以后会开放。