// goldbach rule breaker v1.0
// finds the first odd number that can't be written as the sum of a prime and a square
#include <stdio.h>
#include <math.h>
int main()
{
int primes[1000] = {2, 3};
int count = 2, a = 3, b, c, d, result;
bool bValid = true, bPrime, bSwitch = false;
while (bValid)
{
a+=2;
for (bPrime = true, b = 0; b < count && bPrime; b++)
{
if (primes[b] * primes[b] > a)
break;
if (!(a % primes[b]))
bPrime = false;
}
if (bPrime)
primes[count++] = a;
else
{
for (bValid = false, c = 1; !bValid; c++)
{
result = (a - primes[c]) / 2;
if (result < 1)
break;
for (d = 1; d < result+1 && !bValid; d++)
{
if (d * d > result)
break;
if (d * d == result)
bValid = true;
}
}
}
}
printf("%d", a);
}