printf( "Starting the primes test...\n" );
primes = function( start; stop ) {
# This function finds prime numbers between START and STOP.
local( prime; p_cnt; i; j; odd; test; root; squares; flag; p );
prime = {};
prime.( p_cnt = 1 ) = 3; # a table of primes
# keep track of integer part of square root by adding odd integers
odd = test = 5;
root = 2;
squares = 9;
while ( test <= stop ) {
if ( test >= squares ) {
root += 1;
odd += 2;
squares += odd;
}
flag = 1;
i = 1;
while ( prime.(i) <= root ) {
if ( test % prime.(i) == 0 ) { # not prime
flag = 0;
break;
}
i += 1;
}
if ( flag ) { prime.( p_cnt += 1 ) = test; }
test += 2;
}
prime.(0) = 2;
i = 0;
while ( prime.(i) < start ) {
i += 1;
}
p = fill( p_cnt - i + 1; 0 );
j = 1;
while ( i <= p_cnt ) {
p[j] = prime.(i);
i += 1;
j += 1;
}
return p;
};
if ( norm( primes( 8; 23 ); 1 ) == 83 ) {
printf( "...passed.\n" );
else
printf( "...failed.\a\n" );
exception();
}
syntax highlighted by Code2HTML, v. 0.9.1