logan-maths-utils
Version:
A simple utility package with random number generator, palindrome checker, prime finder and more.
108 lines (92 loc) • 2.13 kB
JavaScript
// Random number between min and max
function randomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
// Find largest number
function findLargest(arr) {
return Math.max(...arr);
}
// Find smallest number
function findSmallest(arr) {
return Math.min(...arr);
}
// Sum of array
function sumArray(arr) {
return arr.reduce((a, b) => a + b, 0);
}
// Average of array
function averageArray(arr) {
return arr.length ? sumArray(arr) / arr.length : 0;
}
// Factorial
function factorial(n) {
if (n < 0) return null;
return n <= 1 ? 1 : n * factorial(n - 1);
}
// Fibonacci (nth number)
function fibonacci(n) {
if (n < 0) return null;
if (n <= 1) return n;
let a = 0, b = 1;
for (let i = 2; i <= n; i++) {
[a, b] = [b, a + b];
}
return b;
}
// Check palindrome (string/number)
function isPalindrome(val) {
const str = val.toString();
return str === str.split("").reverse().join("");
}
// Prime check
function isPrime(num) {
if (num <= 1) return false;
for (let i = 2; i * i <= num; i++) {
if (num % i === 0) return false;
}
return true;
}
// Largest prime in array
function largestPrime(arr) {
const primes = arr.filter(isPrime);
return primes.length ? Math.max(...primes) : null;
}
// GCD (Euclidean algorithm)
function gcd(a, b) {
while (b) [a, b] = [b, a % b];
return a;
}
// LCM
function lcm(a, b) {
return (a * b) / gcd(a, b);
}
// Reverse string
function reverseString(str) {
return str.split("").reverse().join("");
}
// Count vowels
function countVowels(str) {
return (str.match(/[aeiou]/gi) || []).length;
}
// Check anagram
function isAnagram(str1, str2) {
const format = str => str.toLowerCase().replace(/[^a-z0-9]/g, "").split("").sort().join("");
return format(str1) === format(str2);
}
module.exports = {
randomNumber,
findLargest,
findSmallest,
sumArray,
averageArray,
factorial,
fibonacci,
isPalindrome,
isPrime,
largestPrime,
gcd,
lcm,
reverseString,
countVowels,
isAnagram
};