兩種質數求法 篩法 推法

2021-09-14 00:01:15 字數 1220 閱讀 3020

首先寫出推法求質的程式,思想就是拿前面的質數來確定當前驗證的數字為合數。從而,將為確定為合數的數確定為質數,逐漸的加到陣列裡。

推法求質:

#include #include #include using namespace std;

ifstream cin("zhi.in");

ofstream cout("zhi.out");

int main(int argc, char *ar**)

;     int n, i, j, x;

bool f;

cin >> n;

x = 0;

for ( i = 2 ; i <= n ; i++ )

if ( f )

s[x++] = i;

}cout << s[0];

for ( i = 1 ; i < x ; i++ )

if ( s[i] )

cout << " " << s[i];

cout << endl << x << endl;

//system("pause");

return exit_success;

}

然後是篩法求質,思想就是,要把所有的質數的倍數篩掉(即篩掉合數)。從而留下的就都是質數。

#include #include using namespace std;

ifstream cin("zhi.in");

ofstream cout("zhi.out");

int main(int argc, char *ar**)

;    int n, i, j;

cin >> n;

for ( i = 2 ; i <= n ; i++ )

s[i] = 1;

for ( i = 2 ; i <= n ; i++ )

if (s[i] == 1)

for (j = 2 * i ; j <= n ; j += i)

s[j] = 0;

cout << 2;

for ( i = 3 ; i <= n ; i++ )

if ( s[i] )

cout << " " << i;

cout << endl;

//system("pause");

return exit_success;

}

兩種質數求法 篩法 推法(蒟蒻的日常)

首先寫出推法求質的程式,思想就是拿前面的質數來確定當前驗證的數字為合數。從而,將為確定為合數的數確定為質數,逐漸的加到陣列裡。推法求質 include include include using namespace std ifstream cin zhi.in ofstream cout zhi....

普通質數篩法

二 埃氏篩 三.尤拉篩法 4.質數距離 從暴力的直接迴圈開始,一步步對演算法進行優化,一步步簡化時間複雜度,並盡可能討論各種篩法的優劣,以及其中每一步的意義。思路直接,容易被像我們這樣的新手第一時間想到,乙個質數,除了1和它本身以外不再有其他因數,那麼想知道乙個數是不是質數,乾脆直接去看看它有幾個因...

質數線性篩法 O n

埃氏篩法o nloglogn 仍會重複標記合數 such as i 2時 12 2 6,先會被 2 標記已是合數 i 3時 12 3 4,又被標記了一次 我們在生成乙個需要標記的合數時,每次只向現有的數中乘上乙個質因子,並且讓它是所生成合數的最小質因子 code include include us...