From: wakou@... Date: 1999-09-10T22:47:48+09:00 Subject: [ruby-list:16697] Re: Sieve of Eratosthenes (Re: [ruby-dev:6094]) 青山です。 On Fri, 10 Sep 1999 15:27:07 +0900, Shin-ichiro Hara wrote: > しかし step --> while ってのが効くとは思いませんでした。 実は、これが一番効いています。 (k*(i+1)+i).step(max2, k){|j| sieve[j] = nil } この場合、j は毎回初期化されるので、それが大きなネックになります。 従って、ブロックの外で初期化するだけでも速くなります。 j = nil (k*(i+1)+i).step(max2, k){|j| sieve[j] = nil } また、yield() がちょっと重いのでしょうか、これを while にする事で、さ らに高速になりました。 -- 青山 和光 Wakou Aoyama