航電ACM練習 2098 分拆素數和

2021-09-26 19:26:28 字數 879 閱讀 4804

problem description

把乙個偶數拆成兩個不同素數的和,有幾種拆法呢?

input

輸入包含一些正的偶數,其值不會超過10000,個數不會超過500,若遇0,則結束。

output

對應每個偶數,輸出其拆成不同素數的個數,每個結果佔一行。

sample input

30 26 0

sample output

3 2

演算法描述:素數篩 + 雙指標

#include

#define n 10000

using namespace std;

int pri[n];

int mark[n] = ; //1合數,0素數 

int prime(int num)

}int t = 0;

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

}/*for(i = 0; i < t; i++)

cout << endl;*/

return t;

}int solve(int num, int t)else if(pri[i] + pri[j] > num)else if(pri[i] + pri[j] < num)    

}return req;

}int main()

int t = prime(num);

int req = solve(num, t);

cout << req << endl;

}return 0;

} 執行結果:

杭電ACM2098 分拆素數和

題目 這是原始碼。其實我本不想拿出原始碼,畢竟原始碼很容易被複製。我這裡剛開始出錯的地方有 0 0 12811458 22064.cpp 0 0 12811458 22064.cpp 9 error c2668 sqrt 對過載函式的呼叫不明確 include math.h 626 可能是 long...

hdoj 2098 分拆素數和

題目 分拆素數和 最開始打表,把10000以內的素數都存起來,這是為了多次驗證素數的時候節約時間。然後再查詢,對錶內小於給定的n的數x,查詢n x是否位於素數表內。查詢時候沒有加x小於n x的限制條件,所以查出來的個數是真正題目要求輸出數的兩倍,其中包含了x和n x能相同的這一對,整數 準確說應該是...

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 記得加分號才能達到效果...