Skip to content

Instantly share code, notes, and snippets.

@tomonacci
Created February 23, 2010 06:37
Show Gist options
  • Select an option

  • Save tomonacci/311938 to your computer and use it in GitHub Desktop.

Select an option

Save tomonacci/311938 to your computer and use it in GitHub Desktop.

Revisions

  1. tomonacci created this gist Feb 23, 2010.
    18 changes: 18 additions & 0 deletions fiber-prime.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    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)