diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-03-24 08:52:35 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1999-03-24 08:52:35 +0000 |
commit | 35247a52ef719584a59ae9c518523f0ee825c8e3 (patch) | |
tree | e14e2a884d3c40a86f93b8dcb4ec144f510fe35a /sample/sieve.rb | |
parent | 1727010a3abf84fd06f0e44d44b1b8ef6cde588e (diff) |
990324
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@409 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 5e9f792d81..359c185f20 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 ", " |