eulerList
by evgkch
JavaScript
const list = (from, count, step = 1) =>
Array.from({ length: count }, (_, n) => from + n * step);
const NList = n => list(1, n);
const gcd = (a, b) => b === 0 ? a : gcd(b, a % b);
const eulerList = x => NList(x).filter(v => gcd(x, v) === 1);
const union = (listA, listB) => {
const buffer = new Set(listA);
listB.forEach(x => buffer.add(x));
return Array.from(buffer);
}
const eulerStats = to => NList(to).map(eulerList).reduce(union);
console.log(eulerList(16).length)