From 2f83a0bea9da444e3d70569eba3d6847ca02be03 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 21 Sep 2018 21:59:17 +0200 Subject: ... --- forth/forth/sieve.fs | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 forth/forth/sieve.fs (limited to 'forth/forth/sieve.fs') diff --git a/forth/forth/sieve.fs b/forth/forth/sieve.fs new file mode 100644 index 0000000..c5e3cd5 --- /dev/null +++ b/forth/forth/sieve.fs @@ -0,0 +1,43 @@ +\ ******************************************************************* +\ * +\ Filename: sieve.txt * +\ Date: 31.12.2013 * +\ FF Version: 5.0 * +\ MCU: PIC 18 24 30 33 Atmega * +\ Copyright: Mikael Nordman * +\ Author: Mikael Nordman * +\ ******************************************************************* +\ FlashForth is licensed according to the GNU General Public License* +\ ******************************************************************* +\ This normal sieve requires 8 KBytes of RAM. +\ It will not run on most PICs due to lack of memory. +\ sieve2 requires 1 Kbyte of RAM. + +-sieve +marker -sieve +decimal ram +8191 constant size inlined +ram align here size allot constant flags inlined +: sieve + flags size 1 fill + 0 1 !p>r size 1- + for + flags @p + c@ + if + @p dup + 3 + + dup @p + + begin + dup size < + while + 0 over flags + c! + over + + repeat + drop drop 1+ + then + p+ + next + r>p + . ." primes " cr ; + +: bench ticks sieve ticks swap - u. ." milliseconds" cr ; + -- cgit v1.2.3