トップページ > プログラム > 2015年01月04日 > kw9bqH4f

書き込み順位&時間帯一覧

46 位/222 ID中時間01234567891011121314151617181920212223Total
書き込み数0001000000000000010000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
プログラミングのお題スレ Part6©2ch.net

書き込みレス一覧

プログラミングのお題スレ Part6©2ch.net
226 :デフォルトの名無しさん[sage]:2015/01/04(日) 03:46:42.12 ID:kw9bqH4f
>>220 Emacs Lisp
(defun hanrei (upto)
(let ((n 3) l)
(while (<= n upto)
(when (and (= (let ((i n)
(r 1))
(while (> i 0)
(setq r (% (* r 2) n))
(setq i (1- i)))
r) 2)
(eq (let ((n n))
(when (= (% n 2) 1)
(let ((i 3)
(r t))
(while (> n (* i i))
(when (= (% n i) 0)
(setq r nil n 0))
(setq i (+ i 2)))
r))) nil))
(push n l))
(setq n (1+ n)))
(reverse l)))

(progn (setq result (hanrei 100000)) nil)
nil

(length result)
78

(nthcdr 51 result)
(42799 46657 49141 49981 52633 55245 57421 60701 60787 62745 63973 65077 65281 68101 72885 74665 75361 80581 83333 83665 85489 87249 88357 88561 90751 91001 93961)
プログラミングのお題スレ Part6©2ch.net
231 :デフォルトの名無しさん[sage]:2015/01/04(日) 17:13:50.17 ID:kw9bqH4f
>>226は素数の二乗を誤って素数と判定していました。
誤 (> n (* i i))
正 (>= n (* i i))

>>227
繰り返しを使わないように書き直してみました。
私の環境だと10585と11305の間でSEGVが発生してしまいました。

(require 'cl-lib)

(defun hanrei (upto)
(let (l)
(cl-labels ((f (n)
(when (<= n upto)
(when (and (= (cl-labels ((f (i r)
(if (<= i 0) r (f (1- i) (% (* r 2) n)))))
(f n 1)) 2)
(eq (when (= (% n 2) 1)
(cl-labels ((f (i)
(if (< n (* i i)) t (when (/= (% n i) 0) (f (+ i 2))))))
(f 3))) nil))
(push n l))
(f (1+ n)))))
(f 3))
(reverse l)))

(let ((max-lisp-eval-depth most-positive-fixnum) (max-specpdl-size most-positive-fixnum)) (hanrei 10703))
(341 561 645 1105 1387 1729 1905 2047 2465 2701 2821 3277 4033 4369 4371 4681 5461 6601 7957 8321 8481 8911 10261 10585)

(let ((max-lisp-eval-depth most-positive-fixnum) (max-specpdl-size most-positive-fixnum)) (hanrei 11054))
Exception Type: EXC_BAD_ACCESS (SIGSEGV)


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。