Notice: Undefined index: name in /usr/www/lib/views/home/viewtitle.html on line 188
-阅读程序 第 18 题
#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)的返回值为( )。
A. $p^2 + p + 1$
B. $n^2 + n + 1$
C. $n^2 + 1$
D. $p^4 + 2p^2 + 1$
第 5 题 当输入为正整数时,第一项减去第二项的差值一定( )。
第 6 题 当输入为“5”时,输出为( )。

解答部分以后会开放。