正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2024 第一轮真题 › 第 18 题
CSP-J 2024 第一轮 第 18 题:程序(一):sumPrimes 是否计算 2 到 n 之间所有素数之和
题目
#include <iostream>
using namespace std;
bool isPrime(int n) {
if (n <= 1) {
return false;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return false;
}
}
return true;
}
int countPrimes(int n) {
int count = 0;
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
count++;
}
}
return count;
}
int sumPrimes(int n) {
int sum = 0;
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
sum += i;
}
}
return sum;
}
int main() {
int x;
cin >> x;
cout << countPrimes(x) << " " << sumPrimes(x) << endl;
return 0;
}
本小题
sumPrimes 函数计算的是从 $2$ 到 $n$ 之间的所有素数之和。
选项
- √. 正确
- ×. 错误
答案
√
题解
答案:√ 正确。
sumPrimes(n) 的执行过程是:
sum = 0,初始化总和。- 遍历
i = 2到n(包含n)。 - 如果
isPrime(i)判断i是素数,就执行sum += i,将它加入总和。 - 最后返回
sum。
例如,n = 10 时,素数有 2、3、5、7,返回的结果为: \[ 2+3+5+7=17 \]
所以,这个函数计算的就是从 $2$ 到 $n$ 的所有素数之和。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号