正在载入在线练习界面,本页内容可直接阅读…

AK CSP › CSP-J 2024 第一轮真题 › 第 19 题

CSP-J 2024 第一轮 第 19 题:程序(一):输入50时 sumPrimes(50) 的输出

阅读程序 · 初等数论 · 难度 中等 · 答案 B

题目

#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;
}
CSP-J 2024 第一轮 第 19 题 原题
原题扫描(页面加载后可直接在线作答)

本小题

当输入为 $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号