2023年信奥赛CSP-J1普及组初赛阅读程序3:
01 #include <iostream> 02 #include <cmath> 03 using namespace std; 04 05 int solve1(int n){ 06 return n*n; 07 } 08 09 int solve2(int n){ 10 int sum=0; 11 for(int i=1;i<=sqrt(n);i++){ 12 if(n%i==0){ 13 if(n/i==i){ 14 sum+=i*i; 15 }else{ 16 sum+=i*i+(n/i)*(n/i); 17 } 18 } 19 } 20 return sum; 21 } 22 23 int main(){ 24 int n; 25 cin>>n; 26 cout<<solve2(solve1(n))<<" "<<solve1((solve2(n)))<<endl; 27 return 0; 28 }
假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题。
如果输入的n为正整数,solve2函数的作用是计算n所有的因子的平方和( )
第13~14行的作用是避免n的平方根因子i(或n/i)进入第16行而被计算两次( )
如果输入的n为质数,solve2(n)的返回值为n2+1( )
如果输入的n为质数p的平方,那么solve2(n)的返回值为( )
p2+p+1
n2+n+1
n2+1
p4+2p2+1
当输入为正整数时,第一项减去第二项的差值一定( )
大于0
大于等于0且不一定大于0
小于0
小于等于0且不一定小于0
当输入为“5”时,输出为( )
"651.625"
"650.729"
"651.676"
"652.625"