結果

問題 No.2795 Perfect Number
ユーザー Lisp_Coder
提出日時 2024-07-21 01:23:07
言語 Common Lisp
(sbcl 2.5.0)
結果
TLE  
実行時間 -
コード長 677 bytes
コンパイル時間 141 ms
コンパイル使用メモリ 27,904 KB
実行使用メモリ 32,640 KB
最終ジャッジ日時 2024-07-21 01:23:14
合計ジャッジ時間 6,589 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample TLE * 1 -- * 2
other -- * 35
権限があれば一括ダウンロードができます
コンパイルメッセージ
; compiling file "/home/judge/data/code/Main.lisp" (written 21 JUL 2024 01:23: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

ソースコード

diff #

(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 (> limit perfect-num)
            (push perfect-num perfect-numbers)
            (format t "Generated perfect number: ~A~%" perfect-num)))))
    perfect-numbers))

(defun main ()
  (let ((limit (read)))
    (if (some (lambda (x) (= x limit)) (generate-perfect-numbers limit))
        (format t "Yes~%")
        (format t "No~%"))))

(main)
0