September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -0,0 +1,60 @@
|
|||
import tables
|
||||
|
||||
type PrimeType = int
|
||||
|
||||
proc primesHashTable(): iterator(): PrimeType {.closure.} =
|
||||
iterator output(): PrimeType {.closure.} =
|
||||
# some initial values to avoid race and reduce initializations...
|
||||
yield 2.PrimeType; yield 3.PrimeType; yield 5.PrimeType; yield 7.PrimeType
|
||||
var h = initTable[PrimeType,PrimeType]()
|
||||
var n = 9.PrimeType
|
||||
let bps = primesHashTable()
|
||||
var bp = bps() # advance past 2
|
||||
bp = bps(); var q = bp * bp # to initialize with 3
|
||||
while true:
|
||||
if n >= q:
|
||||
let inc = bp + bp
|
||||
h.add(n + inc, inc)
|
||||
bp = bps(); q = bp * bp
|
||||
elif h.hasKey(n):
|
||||
var inc: PrimeType
|
||||
discard h.take(n, inc)
|
||||
var nxt = n + inc
|
||||
while h.hasKey(nxt): nxt += inc # ensure no duplicates
|
||||
h.add(nxt, inc)
|
||||
else: yield n
|
||||
n += 2.PrimeType
|
||||
output
|
||||
|
||||
var num = 0
|
||||
stdout.write "The first 20 primes are: "
|
||||
var iter = primesHashTable()
|
||||
for p in iter():
|
||||
if num >= 20: break else: stdout.write(p, " "); num += 1
|
||||
echo ""
|
||||
stdout.write "The primes between 100 and 150 are: "
|
||||
iter = primesHashTable()
|
||||
for p in iter():
|
||||
if p >= 150: break
|
||||
if p >= 100: stdout.write(p, " ")
|
||||
echo ""
|
||||
num = 0
|
||||
iter = primesHashTable()
|
||||
for p in iter():
|
||||
if p > 8000: break
|
||||
if p >= 7700: num += 1
|
||||
echo "The number of primes between 7700 and 8000 is: ", num
|
||||
num = 1
|
||||
iter = primesHashTable()
|
||||
for p in iter():
|
||||
if num >= 10000:
|
||||
echo "The 10,000th prime is: ", p
|
||||
break
|
||||
num += 1
|
||||
var sum = 0
|
||||
iter = primesHashTable()
|
||||
for p in iter():
|
||||
if p >= 2_000_000:
|
||||
echo "The sum of the primes to two million is: ", sum
|
||||
break
|
||||
sum += p
|
||||
|
|
@ -0,0 +1 @@
|
|||
for p in primesPaged():
|
||||
|
|
@ -0,0 +1 @@
|
|||
for p in iter():
|
||||
Loading…
Add table
Add a link
Reference in a new issue