diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-08-13 05:45:20 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-08-13 05:45:20 +0000 |
commit | 07bb9f21f56b0d066c44c62b0e6be35eb0e0fd51 (patch) | |
tree | 082bb7d5568f3b2e36e3fe166e9f3039394fcf44 /sample/sieve.rb | |
parent | f746453a4ae16f643b2ae8c0d6ec77a2e63b4eb1 (diff) | |
download | ruby-07bb9f21f56b0d066c44c62b0e6be35eb0e0fd51.tar.gz ruby-07bb9f21f56b0d066c44c62b0e6be35eb0e0fd51.tar.xz ruby-07bb9f21f56b0d066c44c62b0e6be35eb0e0fd51.zip |
1.4.0
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@520 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'sample/sieve.rb')
-rw-r--r-- | sample/sieve.rb | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/sample/sieve.rb b/sample/sieve.rb index 5e9f792d8..359c185f2 100644 --- a/sample/sieve.rb +++ b/sample/sieve.rb @@ -1,17 +1,14 @@ # sieve of Eratosthenes -sieve = [] max = Integer(ARGV.shift || 100) +sieve = [] +for i in 2 .. max + sieve[i] = i +end -print "1" -for i in 2 .. max - begin - for d in sieve - fail if i % d == 0 - end - print ", " - print i - sieve.push(i) - rescue +for i in 2 .. Math.sqrt(max) + next unless sieve[i] + (i*i).step(max, i) do |j| + sieve[j] = nil end end -print "\n" +puts sieve.compact.join ", " |