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 <iostream>
#include <stdio.h>
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] == -1) continue;// 已經標記爲非素數的就跳過
for (int j = i + 1; j < n; j++) {// 循環檢查數字i後面的數字是否是質數
if (p[j] == -1) continue;//已經標記爲非素數的就跳過
if (p[j] % i== 0)
p[j] = -1;// 非素數標記爲-1
}
}
for (int i = 2; i < n; i++) {
if (p[i] != -1)
cout << p[i] << endl;
}
return 0;
}
效果:輸入100