C++筛选取法实现2~200范围内素数查找

需积分: 25 15 下载量 196 浏览量 更新于2024-07-13 收藏 19.35MB PPT 举报
本资源是一份关于C++编程的PPT课件,主要讲解如何使用筛选法在C++中求出2~200之间的所有素数。筛选法是一种经典算法,用于找出特定范围内(如2~200)的所有质数。算法的基本步骤如下: 1. 初始化:创建一个从2到200的整数数组,并将其所有元素初始化为1,表示这些数字都可能是素数。 2. 筛选过程:从2开始,依次检查每个数i(从2到√200),对于每个i,如果它是素数,则将它的所有倍数(即i的2倍、3倍、4倍...直到200除以i余数为0的倍数)标记为非素数,将它们的数组值设为0。这是因为如果一个数有因子小于或等于它的平方根,那么它一定有另一个因子大于它的平方根,所以不需要检查大于√200的倍数。 3. 输出结果:遍历整个数组,将那些值仍为1(即未被标记为0)的数输出,这些就是素数。 C++程序示例可能如下: ```cpp #include <iostream> #include <vector> using namespace std; // 判断是否为素数 bool isPrime(int num) { if (num <= 1) return false; for (int i = 2; i * i <= num; ++i) { if (num % i == 0) return false; } return true; } // 筛选素数 void sieveOfEratosthenes(int n) { vector<bool> primes(n + 1, true); // 假设所有数都是素数 primes[0] = primes[1] = false; // 0和1不是素数 for (int i = 2; i * i <= n; ++i) { if (primes[i]) { for (int j = i * i; j <= n; j += i) { primes[j] = false; } } } // 输出素数 for (int i = 2; i <= n; ++i) { if (primes[i]) { cout << i << " "; } } } int main() { sieveOfEratosthenes(200); return 0; } ``` 这份课件涵盖了C++语言的介绍,包括其发展历史、特点以及C++在程序设计中的应用。C++作为结构化语言,具有灵活性、高效性和可移植性,但同时也存在语法不严密、调试相对困难的问题。通过学习筛选法,学生可以理解如何利用C++实现高效的算法,提高编程技能。