高效素數打表

2021-06-01 20:20:36 字數 850 閱讀 8956

大家所知的素數打表時間複雜度幾乎都是n2。

就是這種:

void init_prime()

j = 0;

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

if(!prime[i])

prime[j++] = i;

}

在網上搜到了另一種方法,效率提高了不少。巧妙之處還在研究中,等理解差不多就仔細分析一下。

下面是**,大家可以發表一下自己的看法,交流交流。

**如下:

/*遇到素數需要打表時,先估算素數的個數:

num = n / lnx;

num為大概數字,越大誤差越小(只是估計,用於估算素數表陣列大小)

這個打表法效率貌似很高,網上說幾乎達到了線性時間(不知道是真是假=。=)

*/#include#include#include#include#includeusing namespace std;

int n;

bool visit[10100000];

int prime[10000000];

void init_prim()

for (int j = 1; ((j <= num) && (i * prime[j] <= n)); ++j)

}}int main()

{ memset(prime, 0, sizeof(prime));

int count = 0;

cin>>n;

init_prim();

for(int i = 0; i <= n; ++i)

if(prime[i])

{ cout<

A 高效素數打表

a 高效素數打表 time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 哥德 猜想大家都知道一點吧.我們現在不是想證明這個結論,而是想在程式語言內部能夠表示的數集中,任意取出乙...

高效素數打表

大家所知的素數打表時間複雜度幾乎都是n2。就是這種 void init prime j 0 for i 2 i 1000002 i if prime i prime j i 在網上搜到了另一種方法,效率提高了不少。巧妙之處還在研究中,等理解差不多就仔細分析一下。下面是 大家可以發表一下自己的看法,交...

美素數 素數打表

description 小明對數的研究比較熱愛,一談到數,腦子裡就湧現出好多數的問題,今天,小明想考考你對素數的認識。問題是這樣的 乙個十進位制數,如果是素數,而且它的各位數字和也是素數,則稱之為 美素數 如29,本身是素數,而且2 9 11也是素數,所以它是美素數。給定乙個區間,你能計算出這個區間...