poj 2689 (素數二次篩選)

2021-07-04 10:47:53 字數 862 閱讀 5053

sample input

2 17

14 17

sample output

2,3 are closest, 7,11 are most distant.

there are no adjacent primes.

找出給定範圍內,距離最遠和最近的素數。(不停超時 - -)

給的上界很大,所以全處理肯定不行。 先處理sqrt(2147483647)。

然後再在l 與 r之間篩選素數。

#include #include #include #include #include #define n 10100

typedef long long ll;

using namespace std;

int n,m;

int f[1000500];

int q[1000500];

int t[100050];

int tot;

void prim()

}}int main()

int max = -1;

int min = 1000000000;

int tmp = -1;

int maxl,maxr,minl,minr;

for(int i = 0; i <= r-l; i++)

if(tmp>=0 && i - tmp< min)

tmp = i;}}

if(max == -1)

printf("there are no adjacent primes.\n");

else

}return 0;

}

poj 2689素數篩選

這道題目我就不貼題目了,就是素數篩選題。這道題目差點讓我崩潰,自己太菜的原因,提交了很多次,總是runtime error 後來才知道,素數篩選的範圍這能是2 16,然而這道題給的範圍超出了int的上界,所以,必須要用另外一種方法來篩選,看了人家的部落格,感覺方法超好。這道題有個突破點,就是區間在1...

大區間素數篩選 POJ2689

題意 給乙個區間 l,u 1 l u 2,147,483,647 u l 1000000,求出 l,u 內距離最近和距離最遠的素數對。由於l,u都小於2 32,所以區間內的合數的最小質因子必然小於2 16,所以先篩出2 16以內的素數,用篩出來的素數去篩 l,u 內的合數。然後把 l,u 內的素數儲...

poj 2689 區間素數篩選

由於給出的l和u太大,直接打表是不可能了。但u l 1e6,u 1e9,可以先篩出 0,sqrt u 內的素數,再以此去篩 l,u 內的素數,接著求出相鄰距離最短和最遠的一對素數就行了,這步就簡單了。如下 include include include include include include...