#include <stdio.h>
#include 
<stdlib.h>
#include 
<string.h>

int n, len= 0;
bool visite[1<<15];
int  p[1<<15];

void prim()
{
    memset( visite, 
falsesizeof(visite) );

    
forint i= 2; i<= 1<<15++i )
        
if!visite[i] )
        {
            p[len
++]= i;

            
int t= i+ i;
            
while( t<= 1<< 15 ) 
            {
                visite[t]
= true;
                t
+= i;
            }
        }
}

bool binary( int value )
{
    
int left= 0, right= len;

    
while( left+ 1< right )
    {
        
int m= (left+ right)>> 1;

        
if( value< p[m] ) right=  m;
        
else if( value> p[m] ) left= m;
        
else return true;
    }

    
return false;
}

int main()
{
    prim();

    
while( scanf("%d",&n), n!= 0 )
    {
        
int num= 0;

        
forint i= 0; p[i]* 2<= n; ++i )
            
if( binary(n-p[i]) ) num++;

        printf(
"%d\n", num );
    }

    
return 0;
}

posted on 2008-12-24 20:57 Darren 阅读(238) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理