酷代码 AI
菜单

c++: 题目描述 可怜的小白鼠又被牛博士拿去做实验了。牛博士从实验中获得了 N N个实验数据,牛博士发现些数据中最重要的是其中的素数。请你帮牛博士挑出其中的素数。 输入 输入文件有多行,第一行为数值 N N。 接下来的N行,每行一个实验数据 a i a i ​ 。 输出 有多行数据,第一行为你找到的素数个数,接下来的每行是实验数据中的素数(按原顺序输出)。

以下是解决该问题的C++代码: ```cpp #include <iostream> #include <cmath> using namespace std; // 判断一个数是否为素数的函数 bool isPrime(int num) { if (num < 2) return false; for (int i = 2; i <= sqrt(num); i++) { if (num % i == 0) { return false; } } return true; } int main() { int N; cin >> N; int primes[1000]; // 假设最多有1000个素数 int primeCount = 0; for (int i = 0; i < N; i++) { int num; cin >> num; if (isPrime(num)) { primes[primeCount] = num; primeCount++; } } // 输出素数个数 cout << primeCount << endl; // 输出素数 for (int i = 0; i < primeCount; i++) { cout << primes[i] << endl; } return 0; } ``` 代码说明: 1. `isPrime` 函数:该函数用于判断一个数是否为素数。素数是大于1且只能被1和自身整除的数。首先检查该数是否小于2,如果是,则直接返回 `false`。然后,从2开始到该数的平方根进行遍历,如果能被其中任何一个数整除,则返回 `false`,否则返回 `true`。 2. 主函数 `main`: - 读取输入的整数 `N`,表示实验数据的个数。 - 定义一个数组 `primes` 用于存储找到的素数,以及一个变量 `primeCount` 用于记录素数的个数。 - 使用 `for` 循环读取 `N` 个实验数据,对于每个数据,调用 `isPrime` 函数判断是否为素数,如果是,则将其存入 `primes` 数组,并增加 `primeCount`。 - 输出素数的个数。 - 使用 `for` 循环输出 `primes` 数组中的所有素数。 复杂度分析: - 时间复杂度:对于每个输入的数,判断素数的时间复杂度为 $O(\sqrt{n})$,因此总的时间复杂度为 $O(N\sqrt{n})$,其中 $N$ 是输入的数的个数,$n$ 是输入的数的大小。 - 空间复杂度:使用了一个数组 `primes` 来存储素数,因此空间复杂度为 $O(N)$,其中 $N$ 是输入的数的个数。 [2026-02-01 19:58:27 | AI问答 | 631点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多