UNPKG

@lucadani7/algonodejs-for-beginners

Version:

Just a simple Node.js package with some basic algorithms perfect for people just starting out. It's got easy-to-understand TypeScript versions of stuff like sorting, searching, math with numbers, and messing with strings.

39 lines (38 loc) 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ErathostenesSieve = void 0; class ErathostenesSieve { static deleteElemFromSieve(ourList, value) { ourList[value >> 3] &= ~(1 << (value & 7)); } static checkElemFromSieve(ourList, value) { return (ourList[value >> 3] & (1 << (value & 7))) !== 0; } static primesGenerator(value) { let primesArray = new Array(); primesArray.push(2); const dim = Math.floor(value / 16) + 1; let ourList = new Array(dim); ourList.fill(0xFF, 0, dim); for (let i = 1; ((i * i) << 1) + (i << 1) <= value; ++i) { // if 2 * i + 1 is prime if (this.checkElemFromSieve(ourList, i)) { for (let j = ((i * i) << 1) + (i << 1); (j << 1) + 1 <= value; j += (i << 1) + 1) { this.deleteElemFromSieve(ourList, j); // delete multiples of 2 * i + 1 } } } for (let i = 1; (i << 1) + 1 <= value; ++i) { if (this.checkElemFromSieve(ourList, i)) { primesArray.push((i << 1) + 1); } } return primesArray; } static erathostenesIntervalGenerator(start, end) { const startValue = Math.min(start, end); const endValue = Math.max(start, end); return this.primesGenerator(endValue).filter(elem => elem >= startValue && elem <= endValue); } } exports.ErathostenesSieve = ErathostenesSieve;