by
Anonymous Coward
on 2002年08月09日 22時55分
(#143333)
を馬鹿正直に N までやると O(N^2) ですけど。これも多項式時間?
(defun prime-p (n)
(let ((v (make-array (1+ n) :initial-element t)))
(setf (aref v 0) nil)
(setf (aref v 1) nil)
(dotimes (i (1+ n))
(when (aref v i)
(do ((j (+ i i) (+ i j)))
((> i n))
(setf (aref v j) nil))))
(aref v n)))
;; C で書いたけど変な文字があるって云われるじゃん。
エラトステネスの篩 (スコア:0)
(defun prime-p (n)
(let ((v (make-array (1+ n) :initial-element t)))
(setf (aref v 0) nil)
(setf (aref v 1) nil)
(dotimes (i (1+ n))
(when (aref v i)
(do ((j (+ i i) (+ i j)))
((> i n))
(setf (aref v j) nil))))
(aref v n)))
;; C で書いたけど変な文字があるって云われるじゃん。
Re:エラトステネスの篩 (スコア:3, 参考になる)
Re:エラトステネスの篩 (スコア:0)
# 掛け算は FFTで速くできる、とかきいたが。
Re:エラトステネスの篩 (スコア:3, 参考になる)
商と余りを求める除算の計算量はよく知りません。素朴には O(d^2) 時間でやっているように思いますが。
鵜呑みにしてみる?
Re:エラトステネスの篩 (スコア:2, 参考になる)
ちなみに各近似ステップでの有効桁数は倍々で伸びるので、必要充分な演算精度にして演算量をもっと減らすことは出来る筈です。
でなきゃあそこまで莫大な円周率の計算なんてできません。
Re:エラトステネスの篩 (スコア:1)
鵜呑みにしてみる?
Re:エラトステネスの篩 (スコア:0)
Re:エラトステネスの篩 (スコア:2, 参考になる)
non-restoring division も初耳なので、 SRT 除算まで理解するのは大変そうです。
鵜呑みにしてみる?
Re:エラトステネスの篩 (スコア:0)
Re:エラトステネスの篩 (スコア:2, 参考になる)
入力サイズの指数オーダだって書いてあるけど。
んで、こっちのアルゴリズムの計算量は(漸近的には) O( log(n)^12 ) だって。
# mishimaは本田透先生を熱烈に応援しています
Re:エラトステネスの篩 (スコア:0)