我有一個整數的表作爲TSQL程序找到的最大素數
number
--------
104723
104729
9998
448
目的是要找到數字集合中最大的素數。我這樣做有以下程序
Declare @t table(number int)
Insert into @t values(104723),(104729),(9998),(448)
Declare @maxNum INT
SELECT @maxNum = MAX(number) FROM @t
--generate a number table from 2 to the maximum number supplied
;WITH Cte AS (
SELECT 2 AS num
UNION ALL
SELECT num+1
FROM cte
WHERE num<@maxNum)
SELECT TOP(1) num AS 'Largest Prime' FROM cte
--filter by some known prime numbers (keeping the range between 2 to 19
WHERE
(num=2 OR num%2!=0) AND
(num=3 OR num%3!=0) AND
(num=5 OR num%5!=0) AND
(num=7 OR num%7!=0) AND
(num=11 OR num%11!=0) AND
(num=13 OR num%13!=0) AND
(num=17 OR num%17!=0) AND
(num=19 OR num%19!=0)
ORDER BY 1 DESC
OPTION (MAXRECURSION 0)
/*
Largest Prime
-------------
104729
*/
但我相信會有更多更好的方式來做到這一點。請幫助優化相同
T-SQL是一種腳本語言,是這個問題的錯誤選擇。 –
您可以使用這裏定義的SQL'isPrime'函數[SQL素數函數](http://stackoverflow.com/questions/15566619/sql-prime-number-function) –
此腳本沒有找到最大的素數。它發現的最大數小於或等於表中不能被前8個素數整除的最大數。值得注意的是,它a)可以返回原始表中從未出現的值,並且b)不完成評估素數的完整工作。 –