Published
Edited
Sep 29, 2022
Importers
Insert cell
Insert cell
Insert cell
Insert cell
factors = n => {
const result = [];
for (let i = 0, l = n; i <= l; i++){
if (n % i === 0) result.push(i);
}
return result;
}
Insert cell
Insert cell
function gcd(a, b) {
if (!b) return a;
return gcd(b, a % b);
}
Insert cell
Insert cell
function lcm(a, b) {
return a * b / gcd(a, b)
}
Insert cell
Insert cell
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;
}
Insert cell
Insert cell
function prime(n) {
if (!Number.isInteger(n) || n === 1) { return false; }
for (let i = 2; i <= Math.sqrt(n); i++) {
if (n % i === 0) return false;
}
return true;
}
Insert cell
Insert cell
function primes(n){
const result = [];
if (!Number.isInteger(n)) { return result; }
for (let i = 2; i <= n; i++) {
while (prime(i) && n % i === 0) {
if (!result.includes(i)) result.push(i);
n /= i;
}
}
return result;
}
Insert cell
Insert cell
function square(n){
return Number.isInteger(Math.sqrt(n));
}
Insert cell
Insert cell
function squares(n){
const result = [];
if (!Number.isInteger(n)) { return result; }
for (let i = 0, l = n; i <= l; i++){
if (n % i === 0 && square(i)) result.push(i);
}
return result;
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more