diff --git a/README.md b/README.md
index 089f22069..0f0605171 100644
--- a/README.md
+++ b/README.md
@@ -287,6 +287,15 @@
+### _Uncategorized_
+
+
+View contents
+
+* [`factors`](#factors)
+
+
+
---
## 🔌 Adapter
@@ -5203,6 +5212,54 @@ yesNo('Foo', true); // true
[⬆ Back to top](#table-of-contents)
+---
+ ## _Uncategorized_
+
+### factors
+
+Returns the array of factors of the given `num`.
+If the second argument is set to `true` returns only the prime factors of `num`.
+If `num` is `1` or `0` returns an empty array.
+If `num` is less than `0` returns all the factors of `-int` together with their additive inverses.
+
+Use `Array.from()`, `Array.map()` and `Array.filter()` to find all the factors of `num`.
+If given `num` is negative, use `Array.reduce()` to add the additive inverses to the array.
+Return all results if `primes` is `false`, else determine and return only the prime factors using `isPrime` and `Array.filter()`.
+Omit the second argument, `primes`, to return prime and non-prime factors by default.
+
+**Note**:- _Negative numbers are not considered prime._
+
+```js
+const factors = (num, primes = false) => {
+ const isPrime = num => {
+ const boundary = Math.floor(Math.sqrt(num));
+ for (var i = 2; i <= boundary; i++) if (num % i === 0) return false;
+ return num >= 2;
+ };
+ const isNeg = num < 0;
+ num = isNeg ? -num : num;
+ let array = Array.from({ length: num - 1 })
+ .map((val, i) => (num % (i + 2) === 0 ? i + 2 : false))
+ .filter(val => val);
+ if (isNeg)
+ array = array.reduce((acc, val) => {
+ acc.push(val);
+ acc.push(-val);
+ return acc;
+ }, []);
+ return primes ? array.filter(isPrime) : array;
+};
+```
+
+```js
+factors(12); // [2,3,4,6,12]
+factors(12, true); // [2,3]
+factors(-12); // [2, -2, 3, -3, 4, -4, 6, -6, 12, -12]
+factors(-12, true); // [2,3]
+```
+
+ [⬆ back to top](#table-of-contents)
+
## Collaborators
diff --git a/docs/index.html b/docs/index.html
index a3609632c..c9fb90a97 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -59,7 +59,7 @@
wrapper.appendChild(box);
box.appendChild(el);
});
- }
30 seconds of code Curated collection of useful JavaScript snippets that you can understand in 30 seconds or less.
Adapter
call
Given a key and a set of arguments, call them when given a context. Primarily useful in composition.
Use a closure to call a stored key with stored arguments.
Returns the array of factors of the given num. If the second argument is set to true returns only the prime factors of num. If num is 1 or 0 returns an empty array. If num is less than 0 returns all the factors of -int together with their additive inverses.
Use Array.from(), Array.map() and Array.filter() to find all the factors of num. If given num is negative, use Array.reduce() to add the additive inverses to the array. Return all results if primes is false, else determine and return only the prime factors using isPrime and Array.filter(). Omit the second argument, primes, to return prime and non-prime factors by default.
Note:- Negative numbers are not considered prime.
const factors = (num, primes = false) => {
+ const isPrime = num => {
+ const boundary = Math.floor(Math.sqrt(num));
+ for (var i = 2; i <= boundary; i++) if (num % i === 0) return false;
+ return num >= 2;
+ };
+ const isNeg = num < 0;
+ num = isNeg ? -num : num;
+ let array = Array.from({ length: num - 1 })
+ .map((val, i) => (num % (i + 2) === 0 ? i + 2 : false))
+ .filter(val => val);
+ if (isNeg)
+ array = array.reduce((acc, val) => {
+ acc.push(val);
+ acc.push(-val);
+ return acc;
+ }, []);
+ return primes ? array.filter(isPrime) : array;
+};
+