75 lines
1.7 KiB
Plaintext
75 lines
1.7 KiB
Plaintext
[ nextword
|
|
dup $ "" = if
|
|
[ $ "var needs a name"
|
|
message put bail ]
|
|
$ " [ stack 0 ] is "
|
|
over join
|
|
$ " [ "
|
|
join over join
|
|
$ " replace ] is ->"
|
|
join over join
|
|
$ " [ "
|
|
join over join
|
|
$ " share ] is "
|
|
join swap join
|
|
$ "-> " join
|
|
swap join ] builds var ( [ $ --> [ $ )
|
|
|
|
10000 eratosthenes
|
|
|
|
[ 1 & not ] is even ( n --> b )
|
|
|
|
var n var d var s var a
|
|
var t var x var y var c
|
|
|
|
[ dup 10000 < iff isprime done
|
|
dup even iff
|
|
[ drop false ] done
|
|
dup ->n
|
|
[ 1 - 0 swap
|
|
[ dup even while
|
|
1 >> dip 1+ again ] ]
|
|
->d ->s
|
|
false ->c
|
|
20 times
|
|
[ n-> 2 - random 2 + ->a
|
|
s-> ->t
|
|
a-> d-> n-> **mod ->x
|
|
s-> times
|
|
[ x-> 2 n-> **mod ->y
|
|
y-> 1 =
|
|
x-> 1 !=
|
|
x-> n-> 1 - !=
|
|
and and iff
|
|
[ true ->c conclude ]
|
|
done
|
|
y-> ->x ]
|
|
c-> iff conclude done
|
|
y-> 1 != if
|
|
[ true ->c conclude ] ]
|
|
c-> not ] is prime ( n --> b )
|
|
|
|
say "Primes < 100:" cr
|
|
100 times [ i^ prime if [ i^ echo sp ] ]
|
|
cr cr
|
|
[] 1000 times
|
|
[ i^ 9223372036854774808 + dup
|
|
prime iff join else drop ]
|
|
say "There are "
|
|
dup size echo
|
|
say " primes between 9223372036854774808 and 9223372036854775808:"
|
|
cr cr
|
|
witheach [ echo i^ 1+ 4 mod iff sp else cr ]
|
|
cr cr
|
|
4547337172376300111955330758342147474062293202868155909489 dup echo
|
|
prime iff
|
|
[ say " is prime." ]
|
|
else
|
|
[ say " is not prime." ]
|
|
cr cr
|
|
4547337172376300111955330758342147474062293202868155909393 dup echo
|
|
prime iff
|
|
[ say "is prime." ]
|
|
else
|
|
[ say " is not prime." ]
|