Skip to content

Instantly share code, notes, and snippets.

@bluej100
Created June 5, 2015 06:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bluej100/29ef5130ca53017d2456 to your computer and use it in GitHub Desktop.
Save bluej100/29ef5130ca53017d2456 to your computer and use it in GitHub Desktop.
'use strict';
function putComposite(composites, value, delta) {
let next = value + delta;
let deltas = composites[next] || (composites[next] = []);
deltas.push(delta);
}
function scanComposites(composites, value) {
if (!composites[value]) {
return false;
}
let deltas = composites[value];
for (let i = 0; i < deltas.length; i++) {
putComposite(composites, value, deltas[i]);
}
delete composites[value];
return true;
}
module.exports = function*() {
let composites = {};
yield 2;
for (let value = 3; true; value += 2) {
if (!scanComposites(composites, value)) {
yield value;
putComposite(composites, value, value * 2);
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment