26.计算素数(较差算法)
一. 问题
编写程序,找出1到100之间的所有素数。
二. 思路
1. 用一个 vector 保存当前找到的素数,这个 vector 称为素数表。
2. 对 1 到 100 之间的每一个数,都用这个vector中的素数去除,如果发现能整除,那么说明当前这个数是合数;如果不能整除,那么就说明当前这个数是素数,并把它加入到这个素数表中。
3. 实际上,我们知道 1 不算质数,而 2 是质数,所以我们从 3 开始计算。(即一开始素数表中只有 2 ,后面逐渐往里添加元素)。
三. 代码实现
1 void find_prime(vector<int> &primes, int n) { 2 for (int i = 3; i <= n; i += 2) { 3 bool is_prime = true; 4 for (auto &x : primes) { 5 if (i % x == 0) { 6 is_prime = false; 7 break; 8 } 9 } 10 if (is_prime) { 11 primes.push_back(i); 12 } 13 } 14 }