(defun factorial (n)
(let ((n! 1))
(loop :for i :from 2 :to n :do (setf n! (* n! i)))
n!))
(defconstant long-max-value 9223372036854775807)
(loop :for n :from 9 :to 40
:for n! := (factorial n)
:do (format t "~2d! = ~20d~%" n n!)
:while (< n! long-max-value))
(format t "~26d~%" long-max-value)
KGRlZnVuIGZhY3RvcmlhbCAobikKICAobGV0ICgobiEgMSkpCiAgICAobG9vcCA6Zm9yIGkgOmZyb20gMiA6dG8gbiA6ZG8gKHNldGYgbiEgKCogbiEgaSkpKQogICAgbiEpKQoKKGRlZmNvbnN0YW50IGxvbmctbWF4LXZhbHVlIDkyMjMzNzIwMzY4NTQ3NzU4MDcpCgoobG9vcCA6Zm9yIG4gOmZyb20gOSA6dG8gNDAKICAgICAgOmZvciBuISA6PSAoZmFjdG9yaWFsIG4pCiAgICAgIDpkbyAoZm9ybWF0IHQgIn4yZCEgPSB+MjBkfiUiIG4gbiEpCiAgICAgIDp3aGlsZSAoPCBuISBsb25nLW1heC12YWx1ZSkpCgooZm9ybWF0IHQgIn4yNmR+JSIgbG9uZy1tYXgtdmFsdWUp