Server|sqlserver
I will propose a challenge, who can use Sqlseerver to propose the best method of calculating primes,
I have used a new characteristic CTE and some TSQL implementations, but none of them are ideal, the former (CTE) is limited, whereas the latter (TSQL) produces 1 million primes with 7 minutes.
Can you do better than that?
Here are some of my Code passages
(TSQL Implementation)
SET NOCOUNT ON
Declare @prime table (prime int not null primary key)
--insert into @prime values (2)
--insert into @prime values (3)
--insert into @prime values (5)
--insert into @prime values (7)
--insert into @prime values (11)
declare @number int, @pc int
Set @number = 13
Set @pc = 1
While @pc < 1000000
Begin
If not exists (select 1 from @prime where @number% prime = 0 and Prime < sqrt (@number))
Begin
Insert INTO @prime Select @number
Set @pc = @pc +1
End
Set @number = @number
+ Case @number%2 = 1 then 2
When @number%3 = 2 Then 2
When @number%5 = 4 then 2
When @number%7 = 6 then 2
When @number%11 = then 2
Else 1 End
End
Select @pc
And
(CTE Implementation)
With SEQ
As (select number
UNION ALL
Select S.number
+ case when S.number%2 = 1 then 2
When s.number%3 = 2 Then 2
When S.number%5 = 4 then 2
When S.number%7 = 6 then 2
When S.number%11 = then 2
Else 1 End
From SEQ S
Where number < 32767
)
, Prime as (
Select S.number
From SEQ S
Where NOT EXISTS (select 1 from SEQ S2 where S2.number < S.number and (s.number)% S2.number = 0)
)
SELECT *
From prime
Option (Maxrecursion 32767)