some code to deal with sqaure numbers in p23 clojure, but not perfect yet