結果
問題 |
No.2795 Perfect Number
|
ユーザー |
|
提出日時 | 2024-07-21 01:24:07 |
言語 | Common Lisp (sbcl 2.5.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 637 bytes |
コンパイル時間 | 128 ms |
コンパイル使用メモリ | 27,904 KB |
実行使用メモリ | 32,768 KB |
最終ジャッジ日時 | 2024-07-21 01:24:14 |
合計ジャッジ時間 | 6,678 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | TLE * 1 -- * 2 |
other | -- * 35 |
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 21 JUL 2024 01:24:06 AM): ; file: /home/judge/data/code/Main.lisp ; in: DEFUN MAIN ; (IF (SOME (LAMBDA (X) (= X LIMIT)) (GENERATE-PERFECT-NUMBERS LIMIT)) ; (FORMAT T "Yes~%") ; (FORMAT T "No~%")) ; ; note: deleting unreachable code ; ; compilation unit finished ; printed 1 note ; wrote /home/judge/data/code/Main.fasl ; compilation finished in 0:00:00.008
ソースコード
(defun is-mersenne-prime (p) (let ((mp (1- (expt 2 p)))) (loop for i from 2 to (isqrt mp) never (zerop (mod mp i))))) (defun generate-perfect-numbers (limit) (let ((perfect-numbers '())) (loop for p from 2 do (when (is-mersenne-prime p) (let ((perfect-num (* (1- (expt 2 p)) (expt 2 (1- p))))) (when (<= perfect-num limit) (push perfect-num perfect-numbers))))) (nreverse perfect-numbers))) (defun main () (let ((limit (read))) (if (some (lambda (x) (= x limit)) (generate-perfect-numbers limit)) (format t "Yes~%") (format t "No~%")))) (main)