输入正整数n(n大于等于2),求不大于n的全部质数(素数)【其中一种优化算法:筛选数组法】

1, 质数(素数)概念:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。例如:3 只能被1和3整除,5,7,9 这些都是。4,6这些都不是质数(注意2是质数)。

2 基本思想:利用数组存储所有数值,筛选出全体质数
(1)输入n,创建数组p,数组的内容从0开始依次增1
(2)循环遍历数组p,从下标(记为i)为2的开始
(2.1)如果当前的 p[i] 不是质数,continue 筛选下一个
(2.2)检查数组p中从下标i之后的元素是否为素数。
(2.2.1)如果当前的元素不是质数,continue筛选下一个
(2.2.2)否则,就判断,如果不是质数,就把数组的值标记为-1
(3)从下标2开始,打印出数值不为-1的元素,即为全体质数

3代码

#include 
#include 
using namespace std;
int main() {
	int* p;
	int n;
	cin >> n;
	p = new int[n];
	for (int j = 0; j < n; j++) {
		p[j] = j;
	}
	for (int i = 2; i < n ; i++){ //循环遍历数组,从数字2开始
		if (p[i] =

你可能感兴趣的:(算法基础题集,c++,质数,素数,筛选数组法,优化)