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(); }