$x set $IsPrime to 1 else divide it into $NumberToTest. If there is no remainder$ factor of $NumberToTest) set $IsPrime to 0, else take the next number until the list is exhausted a$ The following query will work until $x >= 19 digits in size. Then we will have to deal with concatenating "thenumber" with its pieces or change to a different data type. */ $sql="SELECT thenumber FROM Number WHERE thenumber <= " . gmp_strval(gmp_add(gmp_sqrt($NumberToTest),1)); $result = $db->query($sql) or die ("\nSelect failed: $sql\n" . $db->error . "\n"); unset($row); /* Loop through the whole list of found primes <= sgrt($NumberToTest) */ while($row = $result->fetchArray()) { $Prime = gmp_init($row['thenumber'],10); if(gmp_cmp(gmp_mod($NumberToTest,$Prime),0) == 0) /* If $NumberToTest/$Prime is even then $NumberToTest isn't prime. */ { $IsPrime = 0; break; } } } /* If prime add this new prime to our prime list. */ if(1 == $IsPrime) { /* Add $NumberToTest to database. This insert will work for now but when the number I'm testing exceeds 19 digits I need to fix this. */ $sql = "INSERT INTO Number (thenumber) VALUES (" . gmp_strval($NumberToTest) . ")"; $db->query($sql) or die ("\nInsert failed: $sql\n" . $db->error . "\n"); } /* Prep for the next number to test by incrementing by 2 and saving this to NumberToTest.txt (in case the program crashes we can start here next time). */ $NumberToTest = gmp_add($NumberToTest,2); } function write_wwi() { global $NumberToTest; @unlink("NumberToTest.txt"); file_put_contents("NumberToTest.txt", gmp_strval($NumberToTest)); } function sig_handler($signo) { switch ($signo) { case SIGINT: write_wwi(); print "SIGINT"; exit; break; case SIGTERM: /* handle shutdown tasks */ write_wwi(); print "SIGTERM"; exit; break; case SIGHUP: /* handle restart tasks */ print "SIGHUP"; write_wwi(); break; default: /* handle all other signals */ } }