• Here's a selection of results when I run the above code on a server here.

     

    39 seconds to find all primes below 5 million, and 18 minutes to find all primes below 100 million.

     

     

    DECLARE @Results TABLE (MaxNumber INT, CheckpointA INT, CheckpointB INT, Finish INT, NumberOfPrimes INT,

        MaxPrime INT, AverageOfPrimes INT,

        Seconds AS CAST(Finish AS DECIMAL) / 1000, Minutes AS CAST(Finish AS DECIMAL) / 60000,

        Time AS CAST(Finish / 60000 AS VARCHAR(5)) + ':' + RIGHT('0' + CAST(Finish / 1000 % 60 AS VARCHAR(2)), 2))

     

    INSERT @Results

              SELECT 1000, 60, 93, 106, 168, 997, 453

    UNION ALL SELECT 5000, 76, 123, 140, 669, 4999, 2314

    UNION ALL SELECT 10000, 76, 156, 186, 1229, 9973, 4667

    UNION ALL SELECT 50000, 76, 280, 360, 5133, 49999, 23575

    UNION ALL SELECT 100000, 76, 466, 656, 9592, 99991, 47372

    UNION ALL SELECT 500000, 76, 1250, 2576, 41538, 499979, 238678

    UNION ALL SELECT 1000000, 93, 2203, 5516, 78498, 999983, 478361

    UNION ALL SELECT 5000000, 110, 10156, 39280, 348513, 4999999, 2406213

    UNION ALL SELECT 10000000, 93, 20030, 93403, 664579, 9999991, 4820081

    UNION ALL SELECT 50000000, 123, 208930, 843080, 3001134, 49999991, 24197369

    UNION ALL SELECT 100000000, 140, 466970, 1089933, 5761455, 99999989, 48461680

     

    SELECT * FROM @Results

     

    /* Results

    MaxNumber CheckpointA CheckpointB Finish  NumberOfPrimes MaxPrime AverageOfPrimes Seconds     Minutes    Time

    --------- ----------- ----------- ------- -------------- -------- --------------- ----------- ---------- -----

    1000      60          93          106     168            997      453             0.106000    0.001766   0:00

    5000      76          123         140     669            4999     2314            0.140000    0.002333   0:00

    10000     76          156         186     1229           9973     4667            0.186000    0.003100   0:00

    50000     76          280         360     5133           49999    23575           0.360000    0.006000   0:00

    100000    76          466         656     9592           99991    47372           0.656000    0.010933   0:00

    500000    76          1250        2576    41538          499979   238678          2.576000    0.042933   0:02

    1000000   93          2203        5516    78498          999983   478361          5.516000    0.091933   0:05

    5000000   110         10156       39280   348513         4999999  2406213         39.280000   0.654666   0:39

    10000000  93          20030       93403   664579         9999991  4820081         93.403000   1.556716   1:33

    50000000  123         208930      843080  3001134        49999991 24197369        843.080000  14.051333  14:03

    100000000 140         466970      1089933 5761455        99999989 48461680        1089.933000 18.165550  18:09

    */

    Ryan Randall

    Solutions are easy. Understanding the problem, now, that's the hard part.