2009. 4. 23.

사이냅 소프트 입사문제 3번

어떤 자연수가 세 개의 자연수의 제곱합으로 나타낼 수 있는지를 보여주기..

n^2 = a^2 + b^2 + c^2

원래는 하나만 보여줘야하지만 그냥 다 보여주는 루틴 만들어놨음
LISP의 루프 구조하나는 확실히 쓰게됐다...


(defun square (n)
(* n n))

(defun find3num (n)
(let ((sq (floor (sqrt n))))
(dotimes (i (+ sq 1))
(let ((sq1 (floor (sqrt (- n (square i))))))
(dotimes (j (+ sq1 1))
(let ((sq2 (floor (sqrt (- n (square i) (square j))))))
(dotimes (k (+ sq2 1))
(cond ((= (+ (square i) (square j) (square k)) n)
(format t "~A ~A ~A ~%" i j k))))))))))


댓글 없음:

댓글 쓰기