;;; -*- Mode:LISP; Package:user; Base:10; Readtable:CL -*-


(defun fac (x)
  (do ((y 1 (+ 1 y))
       (ans 1))
      ((> y x) ans)
    (setq ans (* ans y))))

(defun unfac (x)
  (do ((y 1 (+ 1 y)))
      ((or ;(> y x)
	 (> (- y x) 0)
	   (= x 1))
       (list x y))
    (setq x (/ x y))))

