5 # mawk -f primes.awk [START] STOP
6 # find all primes between 2 and STOP
13 { ustr = sprintf("usage: %s [start] stop", ARGV[0])
19 BEGIN { if (ARGC == 1 || ARGC > 3 ) usage()
20 if ( ARGC == 2 ) { start = 2 ; stop = ARGV[1]+0 }
22 if ( ARGC == 3 ) { start = ARGV[1]+0 ; stop = ARGV[2]+0 }
24 if ( start < 2 ) start = 2
25 if ( stop < start ) stop = start
27 prime[ p_cnt = 1 ] = 3 # keep primes in prime[]
29 # keep track of integer part of square root by adding
36 while ( test <= stop )
38 if ( test >= squares )
45 for ( i = 1 ; prime[i] <= root ; i++ )
46 if ( test % prime[i] == 0 ) # not prime
49 if ( flag ) prime[ ++p_cnt ] = test
56 for( i = 0 ; prime[i] < start ; i++) ;
58 for ( ; i <= p_cnt ; i++ ) print prime[i]