#include <stdio.h>
#define MAX 1000001
int prime[MAX] = {0}; // 0为素数,1不是素数
void getprime()
{
int i, j,count;
for (i = 2; i*i < MAX; i++)
{
if (!prime[i])
{
// for (j = 2; i*j < MAX; j++)
// {
// prime[j*i] = 1; //只要是i的值的倍数,就不是素数。
// count++;
// }
for(j=i*i; j<MAX ;j+=i) //这个效率更高。
{
prime[j] =1;
count++;
}
}
}
printf("%d" , count);
prime[0] = prime[1] = 1;
}
int main()
{
int n, i;
getprime(); //初始化素数数组。
while (scanf("%d", &n)==1 && n )
{
for (i = 3; i <= n/2; i += 2) { // 只需进行n/2即可,而且只有奇数才可能是素数。
if (prime[i] == 1 || prime[n-i] == 1) //两边向中间靠。
{
continue;
}
else
{
printf("%d = %d + %d\n", n, i, n-i);
break;
}
}
if (i > n/2)
printf("Goldbach's conjecture is wrong.\n");
}
return 0;
}