#include <iostream>
using namespace std;
const int N=1e7;
bool status[N+10];
int num=0;
int primes[N+10];
bool get_primes(int n)
{
for(int i=2;i<=n;i++)
{
if(!status[i])
{
primes[num]=i;
num++;
}
for (int j=0;primes[j]<=n/i;j++)
{
status[primes[j]*i]=1;
if(i%primes[j]==0)
{
break;
}
}
}
}
int main()
{
get_primes(N);
int x;
while(scanf("%d",&x)!=EOF)
{
int ans=0;
for(int i=0;i<num;i++)
{
if(primes[i]>x-primes[i]) break;
if(status[x-primes[i]]==0)
{
ans++;
}
}
printf("%d\n",ans);
}
return 0;
}
此段代码自己写了一个bool函数,但是可以发现此函数没有返回值。
在一些平台上,可能会出现Segmentation Fault。但是一旦我们将bool该为void,就回评判正确。所以在之后的写代码的过程中我们可以尽可能的去使用void函数。让我们的代码更规范。