Skip to content

Instantly share code, notes, and snippets.

@tomonacci
Created February 23, 2010 06:37
Show Gist options
  • Save tomonacci/311938 to your computer and use it in GitHub Desktop.
Save tomonacci/311938 to your computer and use it in GitHub Desktop.
Prime number enumerator using Fiber
def fiber_manager(j, g)
fiber_manager((nf = Fiber.new do |i, f|
print "#{i} "
while (n = f.resume) % i == 0; end
Fiber.yield(n)
loop do
n = f.resume
Fiber.yield(n) if n % i != 0
end
end).resume(j, g), nf)
end
fiber_manager(2, Fiber.new do
i = 1
loop do
Fiber.yield(i += 1)
end
end)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment