1. 程式人生 > 資料庫 >親和數 T-SQL程式碼

親和數 T-SQL程式碼

親和數:彼此約數的和等於對方。聽說歐洲幾千年沒找出一對。
轉載請註明出處,聯絡我: [email protected]
本人熱衷於資料庫技術及演算法的研究,志同道合之士, 歡迎探討

DECLARE @n INT=5,@i INT=1,@End INT=0;
WHILE @n<10000
BEGIN
   SELECT @End=@n/2;
   WHILE @i<=@End
   BEGIN
      IF @n%@i=0
      BEGIN
         INSERT INTO Divisor(n,Divisor) VALUES (@n,@i);
      END
      SET @i=@i+1;
   END
   SET @n=@n+1;
END
--上面的過程對每個自然數暴力拆約數,下面的SQL查詢找出對應的親和數
SELECT * FROM (
  SELECT * FROM (
  SELECT N,sum(d.Divisor) D
  FROM Divisor d GROUP BY d.N
  ) t0
    LEFT join
  (SELECT N N1,sum(d.Divisor) D1
  FROM Divisor d GROUP BY d.N
  ) t1 ON t0.D=t1.N1) tt0
  WHERE tt0.N=tt0.D1 AND tt0.N<>tt0.D;

找了這些親和數
在這裡插入圖片描述