SQLでProject Euler − Problem 01
再帰SQLを使ってみました。
シーケンスチックな感じで使えてとても良い感じです。
しかも分かりやすい!
■ 新バージョン
/** 1,000 未満の 3 or 5 の倍数になっている数字の合計を求めよ。 **/ WITH Temp (n) AS ( (SELECT 1) UNION ALL SELECT n+1 FROM Temp WHERE n < 1000 ) SELECT SUM(n) FROM Temp t WHERE t.n % 3 = 0 OR t.n % 5 = 0 OPTION (MAXRECURSION 0)
■ 旧バージョン
/** 1,000 未満の 3 or 5 の倍数になっている数字の合計を求めよ。 **/ --Temp Table CREATE TABLE #temp (id int IDENTITY(1,1) NOT NULL) --Generate WHILE (SELECT count(*) FROM #temp) < (1000-1) BEGIN INSERT INTO #temp DEFAULT VALUES END --Calculation SELECT sum(id) FROM #temp WHERE id % 3 = 0 OR id % 5 = 0 DROP TABLE #temp
-
- -