SQLSEERVER を使用して素数を計算する最良の方法を誰が考え出すことができるか、私は挑戦します。
私は新機能 CTE といくつかの TSQL 実装を使用しましたが、どちらも理想的ではありません。前者 (CTE) には制限があり、後者には ( TSQL) 100 万個の素数を生成するのに 7 分かかりました
もっとうまくできるでしょうか?
これが私のコードスニペットの一部です
(TSQL 実装)
@prime テーブルに nocount を設定します (prime int not null 主キー)
-- @prime 値に挿入します (2)
-- @prime に挿入します値 ( 3)
-- @prime 値に挿入 (5)
-- @prime 値に挿入 (7)
-- @prime 値に挿入 (11)
declare @number int , @pc int
set @number = 13
set @pc = 1
while @pc begin
if not存在 (select 1 from @prime where @number % prime = 0 and prime
@prime select @number に挿入
set @pc = @pc 1
終了
set @number = @number
@number %2 = 1 then 2 の場合
@number %3 = 2 then 2 の場合
when @number %5 = 4 then 2
when @number %7 = 6 then 2
when @number = 10 then 2
else 1 end
end
select @pc
and
(CTE実装)
with seq
as ( 13 個の数値を選択
すべてを結合
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.数値 %7 = 6 then 2
when s.number = 10 then 2
else 1 end
from seq s
where number )
, prime as (
select s.number
from seq s
where not存在( select 1 from seq s2 where s2 .number )
select *
from prime
option (MAXRECURSION 32767)