First 1000 Prime Numbers with SQL Server

前端 未结 3 1636
刺人心
刺人心 2021-01-23 18:04

I got program for Prime which gives only 2 as output. It should give me all based on java program I wrote.

Here is SQL I have created for Prime numbers. It is in SQL Ser

3条回答
  •  感动是毒
    2021-01-23 18:45

    For fun (and I feel like I've likely answered someone's homework, but hey...), like a said, a Tally would be far faster:

    WITH N AS (
        SELECT N
        FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N)),
    Tally AS(
        SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
        FROM N N1, N N2, N N3), --1,000 Numbers
    Remainders AS(
        SELECT T1.I AS [Integer],
               T2.I AS Divider,
               T1.I % T2.I AS Remainder
        FROM Tally T1
             JOIN Tally T2 ON T1.I >= T2.I)
    SELECT R.[Integer] AS PrimeNumber
    FROM Remainders R
    GROUP BY R.[Integer]
    HAVING COUNT(CASE WHEN R.Remainder = 0 THEN 1 END) <= 2
    ORDER BY R.[Integer];
    

    This is pretty fast when you do it for 1,000 rows, but (unsurprisingly) execution time starts to exponentially increase as you increase the range.

提交回复
热议问题