primes-generator v0.2.11
primes-generator
About
This prime number generator combines performance of Sieve of Eratosthenes algorithm with the maximum memory efficiency. It was designed to be RXJS-friendly, and well suited for web app-s.
- See WiKi to help decide which generator to use.
- Other resources: tests and benchmarks.
Installation
$ npm i primes-generatorUsage
Follow the usage examples below, based on your development environment.
JavaScript
Generating an array with the first 10 primes:
const {generatePrimes, stopOnCount} = require('primes-generator');
const i = generatePrimes(); // create infinite primes iterator
const s = stopOnCount(i, 10); // stop-iterator after 10 values
const values = [...s]; // 2, 3, 5, 7, 11, 13, 17, 19, 23, 29TypeScript
Generating an array of all primes up to 17:
import {generatePrimes, stopOnValue} from 'primes-generator';
const i = generatePrimes(); // create infinite primes iterator
const s = stopOnValue(i, 17); // stop-iterator when value reaches 17
const values = [...s]; // 2, 3, 5, 7, 11, 13, 17RXJS
Adding a reusable RXJS wrapper first:
import {Observable, from} from 'rxjs';
import {generatePrimes, IPrimeOptions} from 'primes-generator';
export function primes(options?: IPrimeOptions): Observable<number> {
return from(generatePrimes(options));
}- Generating the first 10 primes:
import {take} from 'rxjs';
primes().pipe(take(10))
.subscribe(prime => {
// 2, 3, 5, 7, 11, 13, 17, 19, 23, 29
});- Generating 10 primes after 100:
import {take} from 'rxjs';
primes({start: 100}).pipe(take(10))
.subscribe(prime => {
// 101, 103, 107, 109, 113, 127, 131, 137, 139, 149
});- Maximum-performance, buffered primes generation:
primes({boost: 10})
.subscribe(prime => {
// 2, 3, 5, 7, 11, 13, 17, 19, 23, 29
});- Detecting primes in another sequence:
import {range, filter} from 'rxjs';
import {isPrime} from 'primes-generator';
range(0, 20).pipe(filter(a => isPrime(a)))
.subscribe(prime => {
// 2, 3, 5, 7, 11, 13, 17, 19
});API
Prime generators:
generatePrimes()- efficiency-focused, infinite prime generatorgeneratePrimes({start: x})- efficiency-focused, infinite prime generator, starting fromxgeneratePrimes({boost: n})- performance-focused prime generator, for up tonprimes
Popular prime functions:
isPrime(x)- verifies ifxis a prime numbercountPrimes(x)- precise primes counter, up tox, using Meissel Lehmer algorithmcountPrimesApprox(x)- instant primes counter, up tox, with error margin < 1%
Work-in-progress:
nthPrime(n)- returns prime from index (not implemented yet)nthPrimeApprox- returns approximate prime from index (not implemented yet)
Helpers for iterators:
stopOnCount(iterator, count)- stops the iterator, oncecounthas been reachedstopOnValue(iterator, maxValue)- stops the iterator whenmaxValueis exceededstopWhen(iterator, cb)- stops the iterator when the callback returns a truthy value
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago