正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2024 第一轮真题 › 第 19 题
CSP-J 2024 第一轮 第 19 题:程序(一):输入50时 sumPrimes(50) 的输出
题目
#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;
}
本小题
当输入为 $50$ 时,sumPrimes(50) 的输出为( )。
选项
- A. 1060
- B. 328
- C. 381
- D. 275
答案
B
题解
答案是 B. 328。
isPrime(i) 判断 i 是否为质数;sumPrimes(n) 遍历从 2 到 n 的所有整数,把其中的质数累加。
不超过 50 的质数有: ``text 2、3、5、7、11、13、17、19、23、29、31、37、41、43、47 ``
因此: \[ \text{sumPrimes}(50) =2+3+5+7+11+13+17+19+23+29+31+37+41+43+47 =\boxed{328} \]
注意:题目问的是 sumPrimes(50) 的返回值。完整程序还会输出质数的个数,所以实际输出为 15 328。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号