简单模拟。

CODE:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;

const int SIZE = 10001;

int prime[SIZE];
int vis[SIZE] = {0};
int cnt;

void init()
{
    int i, j;
    cnt = 0;
    for(i = 2; i < SIZE ; i++) if(!vis[i])
    {
        prime[cnt++] = i;
        for(j =i*i; j < SIZE; j+=i) vis[j] = 1;
    }
}


int is_prime(int n )
{
    int i, j;
    int m = (int)sqrt(n+0.5);
    for(i = 2; i <= m; i++)
    {
        if(n%i == 0return 0;
    }
    return 1;
}


int main()
{
    int i, j;
    int n;
    init();
    while(scanf("%d", &n), n)
    {
        int cnt = 0;
        for(i = 0; i < SIZE && prime[i] < n/2; i++)
        {
            int dif = n-prime[i];
            if(is_prime(dif)) cnt++;
        }
        printf("%d\n", cnt);
    }
    return 0;

} 

posted on 2012-08-25 11:28  有间博客  阅读(130)  评论(0编辑  收藏  举报