From 6aa0e0017d7d0cddc006da885946934b06949a91 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Fri, 14 Oct 2011 04:55:05 +0200 Subject: include libslang-1.4.9 and automatically build it and link erlang-slang against it few (erlang) people will still have libslang-1.4.9 installed or spend time to get it to link against the driver --- libslang/examples/prime.sl | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 libslang/examples/prime.sl (limited to 'libslang/examples/prime.sl') diff --git a/libslang/examples/prime.sl b/libslang/examples/prime.sl new file mode 100644 index 0000000..154f2ee --- /dev/null +++ b/libslang/examples/prime.sl @@ -0,0 +1,46 @@ +#! /usr/bin/env slsh +% This demo counts the number of primes between 2 and some integer + +static define usage () +{ + () = fprintf (stderr, "Usage: %S \n", __argv[0]); + exit (1); +} + +define count_primes (num) +{ + variable size = (num - 1)/2; + variable nonprimes = Char_Type[size + 1]; % last one is sentinel + variable count = 1; + variable prime = 3; + variable i = 0; + + do + { + count++; + %()=printf ("%S\n", prime); + + nonprimes [[i:size-1:prime]] = 1; + variable i_save = i; + while (i++, nonprimes[i]) + ; + prime += 2 * (i - i_save); + } + while (i < size); + + return count; +} + + +static variable Num; + +if (__argc != 2) + usage (); +Num = integer (__argv[1]); +if (Num < 3) + usage (); + +tic (); +()=printf ("\n\n%d primes between 2 and %d in %f seconds.\n", + count_primes (Num), Num, toc ()); +exit(0); -- cgit v1.2.3