【HDOJ】1262 寻找素数对
典型的二分决策树。而且本身两数和是偶数。
1 #include <stdio.h> 2 #include <string.h> 3 4 #define MAXNUM 10001 5 6 int isPrime[MAXNUM]; 7 8 int main() { 9 int i, j, tmp, sum; 10 char ch; 11 12 memset(isPrime, 1, sizeof(isPrime)); 13 isPrime[0] = isPrime[1] = 0; 14 15 for (i=2; i<MAXNUM; ++i) { 16 if (isPrime[i]) { 17 for (j=i+i; j<MAXNUM; j=j+i) 18 isPrime[j] = 0; 19 } 20 } 21 22 while (scanf("%d%c", &sum, &ch) != EOF) { 23 tmp = sum / 2; 24 i = j = tmp; 25 while (i>=2 && j<sum) { 26 while (i>=2 && isPrime[i]==0) 27 i--; 28 while (j<sum && isPrime[j]==0) 29 j++; 30 if (i+j == sum) 31 break; 32 if (i+j < sum) 33 j++; 34 else 35 i--; 36 } 37 printf("%d %d\n", i, j); 38 39 if (ch == '\n') 40 break; 41 } 42 43 return 0; 44 }