• My suggestion, on our SQL Server 2000 installation it finds all primes less than 5000000 in 54 seconds. But of course it depends on the hardware...

     

     

    set nocount on

    go

    select top 5000000 identity(int, 1, 1) as Number into #Numbers

    from syscomments c1 cross join syscomments c2

    go

    alter table #Numbers add constraint PK_Numbers primary key clustered (Number)

    go

    create table #Primes(prime int primary key)

    go

    declare @time datetime

    select @time = getdate()

    declare @i int

    set @i = 1

    while @i*@i < 5000000

    begin

     insert into #Primes

     select n.Number

     from #Numbers n

     where

     n.Number < (@i+1)*(@i+1) and n.Number > @i*@i

     and not exists

     (

      select * from #Primes p

      where p.prime < @i + 1 and n.Number % p.prime = 0

    &nbsp

     set @i = @i + 1

    end

    --select * from #Primes

    select datediff(ms, @time, getdate())

    drop table #Primes

    go

    drop table #Numbers

    go