本文共 869 字,大约阅读时间需要 2 分钟。
2024 CCF 认证第一轮(CSP-J)真题
二、阅读程序题
(程序输入不超过数组或字符串定义的范围,判断题正确填√错误填X;除特殊说明外,判断题 1.5分,选择题3分,共计40 分)
第一题
#include
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;}
本题要求判断以下代码是否正确。请逐一分析代码逻辑,并判断每个部分是否存在问题。
代码主要包含两个函数:isPrime和countPrimes。isPrime函数用于判断一个数是否为质数,countPrimes函数则用于统计在某个数范围内的质数数量。
isPrime函数的逻辑是:如果n小于等于1,直接返回false;否则,遍历从2到sqrt(n)的所有整数,检查是否存在能整除n的数。如果有,返回false;否则返回true。
countPrimes函数则通过遍历2到n的所有整数,依次调用isPrime函数,统计满足条件的质数数量。
代码结构清晰,逻辑严谨。isPrime函数的时间复杂度为O(sqrt(n)),countPrimes函数的时间复杂度为O(n*sqrt(n))。整体代码运行效率较高,适用于小规模数据的质数检测。
请判断以下代码是否正确:
√ isPrime函数的参数是否正确传递?
√ countPrimes函数是否正确调用isPrime函数?
√ for循环的初始值和终止条件是否正确设置?
√ count变量是否正确初始化?
√代码中是否存在多余的空白行或注释?
请在此处填写答案。
发表评论
最新留言
关于作者