The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#/usr/bin/perl -w

########################################################################
#
# Prime number generator.
#
# reverse('©'), November 2001, John McNamara, jmcnamara@cpan.org
#

use Inline AWK;
use strict;

primes(0, 100);

__END__
__AWK__

# This code is modified from the Mawk distribution under the GPL.
function primes(start, stop) {

    if ( start < 2 ) start = 2
    if ( stop < start ) stop = start

    prime[p_cnt = 1] =  3  # keep primes in prime[]

    # keep track of integer part of square root by adding
    # odd integers
    odd     = 5
    test    = 5
    root    = 2
    squares = 9


    while ( test <= stop )
    {
	if ( test >= squares )
	{ root++
	    odd += 2
	    squares += odd
	}

	flag = 1
	for ( i = 1 ; prime[i] <= root ; i++ )
	    if ( test % prime[i] == 0 )  #  not prime
	    { flag = 0 ; break }

	if ( flag )  prime[ ++p_cnt ] = test

	test += 2
    }

    prime[0] = 2

    for( i = 0 ; prime[i] < start ; i++)  ;

    for (  ;  i <= p_cnt ; i++ )  print prime[i]
}