#!/usr/bin/perl

# number of total numbers we are going to allow to be tested

# a subset of these will be prime

my $limit = 100;

# this will hold all numbers between 0 and the $limit'th prime number

my %m_numbers = (

                                 # the model doesnt work starting from 1, but 1 is prime

                                 1 => 1,

                );

my $current = 2;

my $number_tested = keys %m_numbers;

while ($number_tested < $limit) {

    # find the next value for current, e.g. the next entry in m_numbers

    # which does not exist in the hash

    while (exists($m_numbers{$current})) {

                $current++;

    }

    $m_numbers{$current} = 1;

    # set all multiples of $current to false up to $limit

    my $j = $current * 2;

    while ($j < $limit) {

                $m_numbers{$j} = 0;

        $j += $current;

    }

        $number_tested = keys %m_numbers;

}

my $prime = 2;

while ($prime < $limit) {

        print "${prime}\n" if ($m_numbers{$prime});

    $prime++;

}

exit;

 


Page Information

  • 4 months ago [history]
  • View page source
  • You're not logged in
  • No tags yet learn more

Wiki Information

Recent PBwiki Blog Posts