JSFiddle - React, Tailwind, and code Playground
HTML
<dl>
<dt>Primes under 100</dt>
<dd></dd>
</dl>
JavaScript
let nats = function* (n) {
while (true) yield n++
}
let primes = function* () {
yield* sieve(primes(), nats(2))
}
let sieve = function* (pg, ng) {
yield ng.next().value;
let n, p = pg.next().value;
while ((n = ng.next().value) < p * p) yield n;
yield* sieve(pg, (function* () {
while (n = ng.next().value) if (n % p) yield n
})())
}
let take = function* (vs, fn) {
let nx;
while (!(nx = vs.next()).done && fn(nx.value)) yield nx.value
}
document.querySelectorAll('dd')[0].textContent = [...take(primes(), x => x < 100)].join(', ')