diff --git a/README-primefac b/README-primefac new file mode 100644 index 0000000..8be9abc --- /dev/null +++ b/README-primefac @@ -0,0 +1,6 @@ +`primefac-nim` is a translation of Lucas A. Brown's [primefac project](https://github.com/lucasaugustus/primefac) +into Nim. Why? 1. I like his work and wanted it in Nim, 2. I'm trying to learn number theory. + +Some functions are not verbatim translation, and will be marked as such. +This allows me to implement my own optimisations, such as using +the Sieve of Atkins for prime generation rather than the Sieve of Eratosthenes. diff --git a/primegen.nim b/primegen.nim new file mode 100644 index 0000000..748f1a4 --- /dev/null +++ b/primegen.nim @@ -0,0 +1,10 @@ +iterator primegen(limit: int = high(BiggestInt)): int: + """ + Generates primes < limit almost lazily by a segmented sieve of Eratosthenes. + Examples: + >>> primegen().take(20) + [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71] + >>> primegen(73).toSeq() + [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71] + """ +