Robson » Code » C++ » Goldbach

 
// 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);    
}
 
© 2004-17 robson | cc unless stated