https://github.com/lukeed/primeval
A tiny (128B) utility to check if a value is a prime number
https://github.com/lukeed/primeval
Last synced: 10 months ago
JSON representation
A tiny (128B) utility to check if a value is a prime number
- Host: GitHub
- URL: https://github.com/lukeed/primeval
- Owner: lukeed
- License: mit
- Created: 2019-01-16T04:42:13.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-04-13T18:28:45.000Z (over 3 years ago)
- Last Synced: 2024-08-09T10:15:26.055Z (almost 2 years ago)
- Language: JavaScript
- Homepage:
- Size: 17.6 KB
- Stars: 52
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
README
# primeval [](https://travis-ci.org/lukeed/primeval)
> A tiny (128B) utility to check if a value is a prime number
Based on the "multiples of six" approach – [check this out](http://mathforum.org/library/drmath/view/56068.html) for a quick explanation.
As of `3.0.0`, `primeval` is [extremely quick](#benchmarks) and actually usable within application settings.
---
#### Priors
* `primeval@2.0.0` – implemented the [Agrawal–Kayal–Saxena ("AKS") Primality Test](https://en.wikipedia.org/wiki/AKS_primality_test)
AKS is a _fully_ deterministic primality algorithm, but also incredibly slow.
Its primary purpose was educational, so feel [free to explore](https://github.com/lukeed/primeval/tree/v2.0.0)!
---
This module exposes three module definitions:
* **ES Module**: `dist/primeval.mjs`
* **CommonJS**: `dist/primeval.js`
* **UMD**: `dist/primeval.min.js`
## Install
```
$ npm install --save primeval
```
## Usage
```js
import primeval from 'primeval';
primeval(2); //=> true
primeval(3); //=> true
primeval(17); //=> true
primeval(29); //=> true
primeval(25); //=> false
primeval(512); //=> false
primeval(12); //=> false
primeval(1); //=> false
primeval("foobar"); //=> false
primeval(null); //=> false
primeval(NaN); //=> false
```
## API
### primeval(num)
Returns: `Boolean`
#### num
Type: `Number`
The number that you want to check.
> **Note:** Any non-`Number` type will always return a `false` output.
## Benchmarks
The `arguiot` case is the code provided in [`PR #2`](https://github.com/lukeed/primeval/pull/2) by [@arguiot](https://github.com/arguiot) :bowing_man:
Purposefully excluding `primeval@2.0.0` as it's incredibly slow and not meant for actual use.
```
# Node v10.13.0
# Primes
arguiot x 875,571 ops/sec ±0.67% (91 runs sampled)
primeval x 4,589,884 ops/sec ±0.20% (93 runs sampled)
# Not Primes
arguiot x 18,429,333 ops/sec ±0.24% (95 runs sampled)
primeval x 45,944,091 ops/sec ±0.18% (96 runs sampled)
# Carmichael Numbers
arguiot x 10,129,774 ops/sec ±0.41% (97 runs sampled)
primeval x 35,983,866 ops/sec ±0.24% (98 runs sampled)
```
## License
MIT © [Luke Edwards](https://lukeed.com)