UNPKG

prime-functions

Version:

Advanced Prime Numbers Functions. All functions that you need. Generate primes and process with prime numbers

370 lines (325 loc) 9.98 kB
# Prime Functions (Useful Prime Numbers Functions) ![](https://dev.elexron.com/prime-logo-180x180.png) Primes are of the utmost importance to number theorists because they are the building blocks of whole numbers, and important to the world because their odd mathematical properties make them perfect for our current uses. On that matter we've built a library to create and find prime numbers ### Features - Basic prime number generators - Primes' indexes - High performance - Some special prime arrays - Relations with normal integers ## Playground You can play with the functions on [prime.elexron.com](http://prime.elexron.com/) ![](https://prime.elexron.com/prm.png) ## Installation <pre>npm install prime-functions</pre> ## Usage ```javascript const pr = require('prime-functions'); console.log(pr.isPrime(13)); //true ``` You can simply use the ```prime-functions``` on the client side: ```html <script src="https://cdn.jsdelivr.net/npm/prime-functions/index.min.js"></script> <script> const pr = primeFunctions; console.log(pr.isPrime(13)); //true </script> ``` ## Functions - Main Functions - [isPrime](#isprimenumber) - [nthPrime](#nthprimeorder) - [indexOfPrime](#indexofprimeprimenumber) - [nthPrimesSum](#nthprimessumarguments) - [nthPrimesTimes](#nthprimestimesarguments) - [nextPrime](#nextprimecurrentprime) - [prevPrime](#prevprimecurrentprime) - [primeSmallerThan](#primesmallerthannumber) - [primeBiggerThan](#primebiggerthannumber) - [primeDivisors](#primedivisorsnonprimenumber) - [primeDivisorsSum](#primedivisorssumnonprimenumber) - [primeDivisorsTimes](#primedivisorstimesnonprimenumber) - [isPrimeOrDivisors](#isprimeordivisorsnumber) - [primesSmallerThan](#closestprimenumber) - [closestPrime](#isprimenumber) - [randomPrime](#randomprimeminval-maxval) - [nextNPrimes](#nextnprimesminval-n) - [prevNPrimes](#prevnprimesnumber) - [primesBetween](#primesbetweennumber1-number2) - [firstNPrimes](#firstnprimescount) - [isEmirp](#isemirpnumber) - [nthEmirp](#nthemirpnumber) - [hasTwinPrime](#hastwinprimenumber-returnitstwintrue) - [isTruncatable](#isTruncatablenumber) - [truncatableValues](#truncatablevaluesnumber) - [nthTruncatablePrime](#nthtruncatableprimen) - [isPandigitalPrime](#ispandigitalprimen) - Theoretical Functions - [isMersennePrime](#ismersenneprimeprimenumber) - [nthMersennePrime](#nthmersenneprimeorder) - [nthMersennePrimeExponents](#nthmersenneprimeexponentsorder) - [wilsonsTheorem](#wilsonstheoremn-returnwithexplanationtrue) - [phi](#phin) - Helper Functions - [digits](#digitsnumber) - [sum](#sumnumbersarray) - [times](#timesnumbersarray) - [remainDividedBy](#remaindividedbynumber-divisor) - [printExecutionTime](#printexecutiontime) - [beautifyInteger](#beautifyinteger) - [integertotext](#integertotext) - [factorial](#factorialnumber) - [integerToString](#integertostringnumber) - [integerToArray](#integertoarraynumber) - [firstNDigits](#firstndigitsnumber-n-returnasintegertrue) - [lastNDigits](#lastndigitsnumber-n-returnasintegertrue) - [reverseNumber](#reversenumbernumber) #### isPrime(number) Return if a number is [Prime Number](https://en.wikipedia.org/wiki/Prime_number) ```javascript let result = pr.isPrime(13); // true ``` ```javascript let result = pr.isPrime(28); // false ``` #### nthPrime(order) Get nth prime ```javascript let result = pr.nthPrime(5); // 11 ``` #### indexOfPrime(primeNumber) Get index of prime number ```javascript let result = pr.indexOfPrime(13); // 5 ``` Index starts from 0 #### nthPrimesSum(...arguments) ```javascript let result = pr.nthPrimesSum(3,5,7); // 5 + 11 + 17 = 33 ``` #### nthPrimesTimes(...arguments) ```javascript let result = pr.nthPrimesTimes(3,5,7); // 5 * 11 * 17 = 935 ``` #### nextPrime(currentPrime) ```javascript let result = pr.nextPrime(17); // 19 ``` #### prevPrime(currentPrime) ```javascript let result = pr.prevPrime(17); // 13 ``` #### primeSmallerThan(number) ```javascript let result = pr.primeSmallerThan(100); // 97 ``` #### primeBiggerThan(number) ```javascript let result = pr.primeBiggerThan(100); // 101 ``` #### primeDivisors(nonPrimeNumber) ```javascript let result = pr.primeDivisors(42); // [2,3,7] ``` #### primeDivisorsSum(nonPrimeNumber) ```javascript let result = pr.primeDivisorsSum(42); // 2 + 3 + 7 = 12 ``` #### primeDivisorsTimes(nonPrimeNumber) ```javascript let result = pr.primeDivisorsTimes(42); // 2 * 3 * 7 = 42 ``` #### isMersennePrime(primeNumber) Checks if a prime is a [Mersenne Prime](https://en.wikipedia.org/wiki/Mersenne_prime) ```javascript let result = pr.isMersennePrime(127); // true ``` #### nthMersennePrime(order) Get nth [Mersenne Prime](https://en.wikipedia.org/wiki/Mersenne_prime) ```javascript let result = pr.nthMersennePrime(5); // 8191 ``` #### nthMersennePrimeExponents(order) Get nth [Mersenne Prime](https://en.wikipedia.org/wiki/Mersenne_prime)'s exponents ```javascript let result = pr.nthMersennePrimeExponents(5); // 13 - That means 2^13 ``` #### isPrimeOrDivisors(number) If the number is prime it returns true, otherwise it returns prime divisors #### primesSmallerThan(number) ```javascript let result = pr.primesSmallerThan(25); // [ 2, 3, 5, 7, 11, 13, 17, 19, 23 ] ``` #### closestPrime(number) ```javascript let result = pr.closestPrime(25); // 23 ``` #### randomPrime(minVal, maxVal) ```javascript let result = pr.randomPrime(25, 48); // 31 ``` #### nextNPrimes(minVal, n) ```javascript let result = pr.nextNPrimes(25, 5); // [ 29, 31, 37, 41, 43 ] ``` #### prevNPrimes(number) ```javascript let result = pr.prevNPrimes(25, 5); // [ 23, 19, 17, 13, 11 ] ``` #### primesBetween(number1, number2) ```javascript let result = pr.primesBetween(80, 150); // [ 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149 ] ``` #### firstNPrimes(count) ```javascript let result = pr.firstNPrimes(7); // [ 2, 3, 5, 7, 11, 13, 17 ] ``` #### digits(number) helper function ```javascript let result = pr.digits(1554); // 4 ``` #### sum(numbersArray) helper function ```javascript let result = pr.sum([2,3,4]); // 9 ``` #### times(numbersArray) helper function ```javascript let result = pr.times([2,3,4]); // 24 ``` #### remainDividedBy(number, divisor) helper function ```javascript let result = pr.remainDividedBy(8,3); // 2 ``` #### printExecutionTime() helper function That should be bottom of the script ```javascript pr.printExecutionTime(); // Execution time: 119ms ``` #### beautifyInteger() helper function ```javascript pr.beautifyInteger(123123123); // 123.123.123 ``` #### reverseNumber(number) helper function ```javascript pr.reverseNumber(123456); // 654321 ``` #### integerToText() helper function ```javascript pr.integerToText(1234567890); // bcdefghija ``` #### integerToString(number) helper function ```javascript pr.integerToString(1234567890); // '1234567890' ``` #### integerToArray(number) helper function ```javascript pr.integerToArray(1234567890); // ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'] ``` #### firstNDigits(number, n, returnAsInteger=true) helper function Returns number first n digits ```javascript pr.firstNDigits(1234567890, 4); // 1234 ``` #### lastNDigits(number, n, returnAsInteger=true) helper function Returns number last n digits ```javascript pr.lastNDigits(1234567890, 4); // 7890 ``` #### isEmirp(number) returns if the given number is emirp. ```javascript pr.isEmirp(13); // true pr.isEmirp(31); // true pr.isEmirp(19); // false ``` #### nthEmirp(number) returns nth emirp. 1 is the 11 ```javascript pr.nthEmirp(2); // 13 pr.nthEmirp(5); // 37 ``` #### hasTwinPrime(number, returnItsTwin=true) check if the prime has a twin ```javascript pr.hasTwinPrime(3); // 5 pr.hasTwinPrime(5); // [5, 7] pr.hasTwinPrime(311); // 313 pr.hasTwinPrime(3, false); // True pr.hasTwinPrime(37); // false ``` #### factorial(number) helper ```javascript pr.factorial(3); // 6 pr.factorial(pr.factorial(3)); // 720 ``` #### wilsonsTheorem(n, returnWithExplanation=true) The [Wilson's Theorem](https://en.wikipedia.org/wiki/Wilson%27s_theorem). n+1 should be prime number if and only if n! mod(n+1) = n. returnWithExplanation is the conditions and explanation of Wilson's Theorem. ```javascript pr.wilsonsTheorem(6); /* { formula: 'FORMULA: f(n) = ( 6! mod(6+1) / n ) * ( 6+1 ) + 2 --- CONDITIONS: if 6+1 is prime if and only if 6! mod(6+1) = 6 ', result: 7 } */ pr.wilsonsTheorem(6, false); // 7 ``` #### phi(n) Euler's [phi](https://en.wikipedia.org/wiki/Euler%27s_totient_function) and also known as [totient](https://en.wikipedia.org/wiki/Euler%27s_totient_function) function. Function can be used as both phi and totient ```javascript pr.totient(1) // 1 pr.phi(2) // 1 pr.phi(3) // 2 pr.phi(4) // 2 pr.totient(5) // 4 pr.phi(6) // 2 pr.phi(7) // 6 pr.totient(8) // 4 pr.phi(9) // 6 pr.phi(10) // 4 ``` #### isTruncatable(number) Check if the given number is [Truncatable Prime](https://en.wikipedia.org/wiki/Truncatable_prime) ```javascript pr.isTruncatable(3797); //true pr.isTruncatable(373); //true pr.isTruncatable(23); //false ``` #### truncatableValues(number) Returns number's [Truncatable](https://en.wikipedia.org/wiki/Truncatable_prime) values ```javascript pr.truncatableValues(3797); /* { leftToRight: [ 3, 37, 379, 3797 ], rightToLeft: [ 7, 97, 797, 3797 ] } */ ``` #### nthTruncatablePrime(n) Finds the nth [Truncatable Prime](https://en.wikipedia.org/wiki/Truncatable_prime) ```javascript pr.nthTruncatablePrime(10); // 3797 ``` #### isPanditalPrime(n) Checks if the given number is [Pandigital Prime](https://oeis.org/wiki/Pandigital_numbers) ```javascript pr.isPandigitalPrime(2143); // true ```