It was proposed by Christian Goldbach that every odd composite number can be written as the sum of a prime and twice a square.
9 = 7 + 212
15 = 7 + 222
21 = 3 + 232
25 = 7 + 232
27 = 19 + 222
33 = 31 + 212
It turns out that the conjecture was false.
What is the smallest odd composite that cannot be written as the sum of a prime and twice a square?
#define N 10000
bool primeORcomposite(int x)
{
for (int i = 2; i*i <= x; i++)
{
if (x%i == 0)
{
return false;
}
}
return true;
}
int main()
{
clock_t ts,te;
ts=clock();
int answer = 0;
int i,j,k;
int prime[N]={2,3};
int composite[N];
int x,y;
bool b = false;
for (i = 5, j = 2,k = 0; i < N; i+=2)
{
if (primeORcomposite(i) == true)
{
prime[j] = i;
j++;
}
else
{
composite[k] = i;
k++;
}
}
for (x = 0; x < k; x++)
{
for (y = 0; y < j && prime[y] < composite[x];y++)
{
int temp = (int)sqrt((composite[x]-prime[y])/2);
if (temp*temp*2 == composite[x]-prime[y])
{
b = true;
printf("%10d,%10d",composite[x],prime[y]);
break;
}
}
if (b == false)
{
answer = composite[x];
break;
}
b =false;
}
printf("\nanswer %d",answer);
te=clock();
printf("\ntime difference: %ds\n",(te-ts)/CLOCKS_PER_SEC);
getchar();
return 0;
}