in reply to (Golf): Sieve of Eratosthenes

How about this at 45 (strict compliant too):
sub sieve { sub p{$_[0],@_?p(grep$_%$_[0],@_):()}p 2..pop }
   MeowChow                                   
               s aamecha.s a..a\u$&owag.print

Replies are listed 'Best First'.
Re: Re: (Golf): Sieve of Eratosthenes
by chipmunk (Parson) on May 19, 2001 at 21:54 UTC
    I think that undef is not prime. :)

    But at 47 characters I think MeowChow still won't be beat:

    sub sieve { sub p{$_[0],@_>1?p(grep$_%$_[0],@_):()}p 2..pop }
      I had thought of that, but assumed it would slide :)

      Make that 46 by the way...

      sub sieve { sub p{$_[0],$#_?p(grep$_%$_[0],@_):()}p 2..pop }
         MeowChow                                   
                     s aamecha.s a..a\u$&owag.print
        I had thought of that, but that goes into deep recursion if you call sieve(1). :)

        Oh, but tilly says that you may assume $n is above a fixed number. Pooh!

      Abusing the rules for fun and profit (46 chars):
      sub sieve { sub p{$_[0],@_>1?p(grep$_%$_[0],@_):1}p 2..pop }
         MeowChow                                   
                     s aamecha.s a..a\u$&owag.print
Re (tilly) 2: (Golf): Sieve of Eratosthenes
by tilly (Archbishop) on May 19, 2001 at 21:27 UTC
    Unless someone improves on this I think I know who is getting the t-shirt for the main problem. If anyone comes within 5 characters of beating my solution - HAH! How about if anyone completely trashes the best I could do..?

    Of course the bonus question is still wide open...