Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30
26
0
Sample Output
3
2
先打素数表,再一个一个判断,水
不知道为啥,编译错误
#include#include #include using namespace std;int prime[10000];void init_prime(){ int i, j; for(i = 2;i <= sqrt(10001.0); ++i) { if(!prime[i]) for(j = i * i; j < 10001; j += i) prime[j] = 1; } j = 0; for(i = 2;i <= 10001; ++i) if(!prime[i]) prime[j++] = i;}bool f(int N,int i){ int t = N - prime[i]; for(int j = i + 1;prime[j] < N;j++) if( t == prime[j])return true; return false;}int main(){ int N; init_prime(); while(cin >> N){ if( N == 0 )break; int n = 0; for(int i = 0;prime[i] < N /2;i++){ if(f(N,i))n++; } cout << n << endl; } //system("pause"); return 0;}
HDU选C++ !!!