1#! /usr/bin/env slsh 2% This demo counts the number of primes between 2 and some integer 3 4private define usage () 5{ 6 () = fprintf (stderr, "Usage: %S <integer greater than 2>\n", __argv[0]); 7 exit (1); 8} 9 10define count_primes (num) 11{ 12 variable size = (num - 1)/2; 13 variable nonprimes = Char_Type[size + 1]; % last one is sentinel 14 variable count = 1; 15 variable prime = 3; 16 variable i = 0; 17 18 do 19 { 20 count++; 21 %()=printf ("%S\n", prime); 22 23 nonprimes [[i:size-1:prime]] = 1; 24 variable i_save = i; 25 while (i++, nonprimes[i]) 26 ; 27 prime += 2 * (i - i_save); 28 } 29 while (i < size); 30 31 return count; 32} 33 34private variable Num; 35 36if (__argc != 2) 37 usage (); 38Num = integer (__argv[1]); 39if (Num < 3) 40 usage (); 41 42tic (); 43()=printf ("\n\n%d primes between 2 and %d in %f seconds.\n", 44 count_primes (Num), Num, toc ()); 45exit(0); 46