pairs = n => {
const neg = n < 0;
if (neg) n *= -1;
const pairs = [];
const fs = factors(n);
for (let i = 0, l = fs.length; i < l; i++){
const factor = fs[i];
const pair = n / factor;
if (neg) {
pairs.push([factor * (neg ? -1 : 1), pair]);
}
else {
if (pairs.map(d => d[1]).includes(factor)){
break;
}
else {
pairs.push([factor, pair], [-factor, -pair]);
}
}
}
return pairs;
}