不是VIP会员,不能显示答案

题目解答

题目:
#include <iostream>

#include <cmath>

using namespace std;



int solve1(int n) {

return n * n;

}



int solve2(int n) {

int sum = 0;

for (int i = 1; i <= sqrt(n); i++) {

if(n % i == 0) {

if(n/i == i) {

sum += i*i;

} else {

sum += i*i + (n/i)*(n/i);

}

}

}

return sum;

}



int main() {

int n;

cin >> n;

cout<<solve2(solve1(n))<<" "<<solve1(solve2(n))<< endl;

return 0;

}







假设输入的 n 是绝对值不超过 1000 的整数,完成下面的判断题和单选题:

判断题

1) 如果输入的 n 为正整数,solve2 函数的作用是计算 n 所有的因子的平方和。( )

2) 第 13-14 行的作用是避免 n 的平方根因子(或 n/i)进入第 16 行而被计算两次。( )

3) 如果输入的 n 为质数,solve2(n)的返回值为 n^2+1。( )




选择题

4) (4 分)如果输入的 n 为质数 p 的平方,那么 solve2(n)的返回值为( )。

5) 当输入为正整数时,第一项减去第二项的差值一定( )。

6) 当输入为“5”时,输出为( )。
考点:
分析:
解答:
评论:
老师: