2 1 hduoj 2098 分拆素數和

2021-10-02 11:42:00 字數 570 閱讀 1573

problem description

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

input

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

output

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

sample input

sample output

#include#include//判斷是否是素數

int z(int n)

{ if(n==3||n==2)

return 1;

if(n%2==0)

return 0;

if(n%6!=1&&n%6!=5)

return 0;

for(int i=5;i方法就是半暴力法,因為是偶數,所以那個不同的質數不可能是偶數+偶數,所以迴圈可以從3起點,2為步長。而素數的判斷則是之前的題目中有提到過的那種比較快捷的方法。

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

分拆素數和 HDU 2098

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