#!/usr/local/bin/tclsh
# $Id: sieve.tcl,v 1.9 2001/05/06 04:37:45 doug Exp $
# http://www.bagley.org/~doug/shootout/
# with help from: Kristoffer Lawson
proc sieve {num} {
while {$num > 0} {
incr num -1
set count 0
for {set i 2} {$i <= 8192} {incr i 1} {
set flags($i) 1
}
for {set i 2} {$i <= 8192} {incr i 1} {
if {$flags($i) == 1} {
# remove all multiples of prime: i
for {set k [expr {$i+$i}]} {$k <= 8192} {incr k $i} {
set flags($k) 0
}
incr count 1
}
}
}
return $count
}
set NUM [lindex $argv 0]
if {$NUM < 1} {
set NUM 1
}
set count [sieve $NUM]
puts "Count: $count"