Sha256: 64f28676bb1042cef58a07e0c43a1811ab77cb6bdafe38215c3b1e09b3e8e023

Contents?: true

Size: 559 Bytes

Versions: 323

Compression:

Stored size: 559 Bytes

Contents

package Example;

use strict;
use warnings;

sub new {
    my ($class, $max) = @_;
    die "ArgumentError, number too small: $max" if $max < 2;
    bless { max => $max }, $class;
}

sub primes {
    my $self = shift;
    my $prime = 2;

    return [$prime] if $self->{max} == $prime;

    my @list = 3..$self->{max};
    my @primes = ($prime,);

    while(@list > 0) {
        my @candidates = grep { $_ % $prime != 0 } @list;
        $prime = shift @candidates;
        push @primes => $prime;
        @list = @candidates;
    }

    return [@primes];
}

1;

Version data entries

323 entries across 323 versions & 1 rubygems

Version Path
trackler-2.2.1.105 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.104 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.103 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.102 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.101 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.100 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.99 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.98 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.97 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.96 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.95 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.94 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.93 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.92 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.91 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.90 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.89 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.88 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.87 tracks/perl5/exercises/sieve/Example.pm
trackler-2.2.1.86 tracks/perl5/exercises/sieve/Example.pm