* Menu
[[About:self:AboutPage.txt]] | [[Profile:file/southly/]] | [[まとめ:self:1163859357.txt]] | [[オリジナル:http://ninjinix.x0.com/rn/]] | [[xyzzy:http://raido.sakura.ne.jp/southly/xyzzy/site-lisp/]] | [[あんてな:http://i-know.jp/southly/listall]] | [[■:http://raido.sakura.ne.jp/southly/lisp/ni/view.lisp]] | [[buzz:http://www.google.com/profiles/southly#buzz]]
- Scrapbook : Oniguruma
- 素数を求める
- 素数を求める
- 素数を求める
- 2006-06-22
- 素数を求める。
- Scrapbook : soft/Xming - ペンギンの杜 - Linuxソフトライブラリ -
- xyzzy lisp : formatのCONTROL-STRINGとパラメータと「:」と「@」の関係
- Scrapbook : ブザーの鳴らないLinuxマシン(Beepオフ)
- Scrapbook : Emacs Lisp
- xyzzy lisp : defpackage の OPTIONS に指定できるもの
- Scrapbook : GIGAZINE - パーティションを操作できるフリーソフト「GParted Live CD」
- Scrapbook : サッカーの得点とポアソン分布(TAKENAKA's Web Page:)
- xyzzy topic : xyzzy使い in はてな
page 14 - << : 0 : 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21 : 22 : 23 : >>
* Scrapbook : Oniguruma
* 素数を求める
素直じゃない再帰・マクロ(ほぼ)無し
(defun generate-primes (limit) (format t "~{ ~D~}~%" (funcall (lambda (f c n &optional (x 3) (prime (list 2))) (funcall f f c n x prime)) (lambda (f c n x prime) (if (> x n) (nreverse prime) (if (funcall c c x prime) (funcall f f c n (+ x 2) (cons x prime)) (funcall f f c n (+ x 2) prime)))) (lambda (c x prime) (if (endp prime) t (if (zerop (rem x (car prime))) nil (funcall c c x (cdr prime))))) limit)))
* 素数を求める
素直に再帰
(defun generate-primes (limit) (labels ((check (x prime) (cond ((endp prime) t) ((zerop (rem x (car prime))) nil) (t (check x (cdr prime))))) (main (n x prime) (cond ((> x n) (nreverse prime)) ((check x prime) (main n (+ x 2) (cons x prime))) (t (main n (+ x 2) prime))))) (format t "~{ ~D~}~%" (main limit 3 (list 2)))))
* 素数を求める
素直にループ
(defun generate-primes (limit) (let ((prime nil)) (push 2 prime) (do ((x 3 (+ x 2))) ((> x limit)) (if (dolist (i prime t) (if (zerop (rem x i)) (return nil))) (push x prime))) (format t "~{ ~A~}~%" (nreverse prime))))
* 2006-06-22
* 素数を求める。
とりあえず、アルゴリズム事典から。
よりLispらしく。
よりLispらしく。
(defun generatePrimes (n) (let ((k 0) (prime (make-vector n :fill-pointer 0))) (vector-push 2 prime) (incf k) (do ((x 3 (+ x 2)) (i 0 0)) ((>= k n)) (while (and (< i k) (/= 0 (rem x (aref prime i)))) (incf i)) (when (= i k) (vector-push x prime) (incf k))) prime))