hdoj 2098 分拆素數和

2021-06-19 07:30:44 字數 507 閱讀 8827

題目:分拆素數和

最開始打表,把10000以內的素數都存起來,這是為了多次驗證素數的時候節約時間。

然後再查詢,對錶內小於給定的n的數x,查詢n-x是否位於素數表內。

查詢時候沒有加x小於n-x的限制條件,所以查出來的個數是真正題目要求輸出數的兩倍,其中包含了x和n-x能相同的這一對,整數(準確說應該是奇數)除2後這一對就消除了。

另外注意stl裡的查詢函式find,用陣列的話找不到的話返回的是陣列元素最後乙個位址。不像是其他類似vector,set等容器的.end()

**如下:

140ms236k

#include#includeusing namespace std;

int main()

, cnt=3;

for(int i=7; i<=10000; ++i)

{flag=true;

for(int j=0; j

看了下discuss,

有個**的解釋非常好,有助於理清思路,就不貼了。

hdoj2098分拆素數和(素數打表)

description 把乙個偶數拆成兩個不同素數的和,有幾種拆法呢?input 輸入包含一些正的偶數,其值不會超過10000,個數不會超過500,若遇0,則結束。output 對應每個偶數,輸出其拆成不同素數的個數,每個結果佔一行。sample input 3026 0 sample output...

hd 2098 分拆素數和

原題鏈結 includeint sushu int n return 0 int main return 0 打表法 includeint prime 10010 int fun int main printf d n k while 1 return 0 使用while 1 記得加分號才能達到效果...

分拆素數和 HDU 2098

problem 把乙個偶數拆成兩個不同素數的和,有幾種拆法呢?input 輸入包含一些正的偶數,其值不會超過10000,個數不會超過500,若遇0,則結束。output 對應每個偶數,輸出其拆成不同素數的個數,每個結果佔一行。sample input 30 26 0sample output3 2 ...