Is there really no simpler way to drop the top of stack that works for strings and numbers and in all versions of Dc?
=Python/Primes/FSOE=
{{works with|Python|2.x}}
This is a sequentialised variant of the well known sieve method (ab)using a dictionary as sparse array.
Alternatively you can describe it as finding the wheels and moving them on a tape. The only knowledge is to start looking 2 instead of starting with 1, but the original sieve does skip 1 too. 2 is not hard coded to be prime. The algorithm detects it as 1st prime and then puts the 2-wheel on the tape.
==Python/Primes/FSOE1==
Variant: A tape position can hold multiple wheels.
<lang python>L = {}
n = 2
while 1:
if n in L:
P = L[n]
del L[n] # optional - saves some memory.
else:
print n
P = [n]
for p in P:
npp = n+p
if npp in L:
L[npp].add(p)
else:
L[npp] = set([p])
n += 1</lang>
{{out}}
<pre>
2
3
5
7
11
13
17
19
23
29
</pre>
...the program has to be terminated by the user e.g. by typing ctrl-c.
==Python/Primes/FSOE3==
{{works with|Python|2.x}}
Variant: A tape position can hold one wheel.
<lang python>L = {}
n = 2
while 1:
if n in L:
P = L[n]
del L[n] # optional - saves some memory.
else:
P = n
print n
m = n+P
while m in L:
m += P
L[m] = P
n += 1</lang>
{{out}}
<pre>
2
3
5
7
11
13
17
19
23
29
</pre>
...the program has to be terminated by the user e.g. by typing ctrl-c.
----
{{mylangbegin}}
{{mylang|AWK|}}
{{mylang|C|}}
{{mylang|Dc|}}
{{mylang|Spin|}}
{{mylangend}}
Latest revision as of 09:25, 7 June 2021
Cookies help us deliver our services. By using our services, you agree to our use of cookies.