結果

問題 No.2795 Perfect Number
ユーザー Lisp_CoderLisp_Coder
提出日時 2024-07-21 01:24:07
言語 Common Lisp
(sbcl 2.3.8)
結果
TLE  
実行時間 -
コード長 637 bytes
コンパイル時間 128 ms
コンパイル使用メモリ 27,904 KB
実行使用メモリ 32,768 KB
最終ジャッジ日時 2024-07-21 01:24:14
合計ジャッジ時間 6,678 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 TLE -
testcase_01 -- -
testcase_02 -- -
testcase_03 -- -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
testcase_18 -- -
testcase_19 -- -
testcase_20 -- -
testcase_21 -- -
testcase_22 -- -
testcase_23 -- -
testcase_24 -- -
testcase_25 -- -
testcase_26 -- -
testcase_27 -- -
testcase_28 -- -
testcase_29 -- -
testcase_30 -- -
testcase_31 -- -
testcase_32 -- -
testcase_33 -- -
testcase_34 -- -
testcase_35 -- -
testcase_36 -- -
testcase_37 -- -
権限があれば一括ダウンロードができます
コンパイルメッセージ
; 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

ソースコード

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 (<= 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)
0