swuecho
2/24/2014 - 1:05 AM

gistfile1.txt

发信人: zhaowei2008 (zhaowei), 信区: JobHunting
标  题: 问个题目: 从1-n 中找出k, 使得 k=a^2 +b^2 (a b 为整数)
发信站: BBS 未名空间站 (Sun Feb 23 15:31:23 2014, 美东)

问个题目: 从1-n 中找出k, 使得 k=a^2 +b^2 (a b 为整数)

有好的算法吗? 


(defn find-k [n]
  (let [s (int (Math/sqrt n))]
    (distinct
      (for [a (range 1 (inc s))
            b (range a (inc s))
            :let [c (+ (* a a) (* b b))]
            :when (<= c n)]
        c))))