# Divisor ·

Divisor is a utility tools that calculates divisors/factors of natural numbers and gcd/lcm using euclid's algorithm.

## Installing

Using npm:

`npm i divisor`

## Documentation

API documentation can be found here.

On local development environment simply run

`npm run gen-docs`

## Examples

Examples from some of the utility methods from package.

### note: CommonJS usage

In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with `require()`

use the following approach:

`const divisor = require('divisor');`

### note: ES Modules usage

In order to gain the TypeScript typings (for intellisense / autocomplete) while using ES Module imports with `import`

use the following approach:

`import divisor from 'divisor';`

### Calculating single number divisors

Get divisors of a number

```
const divisors = divisor.getDivisors(20);
// [ 1, 20, 2, 10, 4, 5 ]
```

Get sorted divisors of a number

```
const sortedDivisors = divisor.getDivisors(20, { sort: 'asc' });
// [ 1, 2, 4, 5, 10, 20 ]
```

### Divisor Options

```
{
sort?: string | undefined; // optional - supports 'asc' | 'desc'
onlyProperDivisors?: boolean; // optional
}
```

### Calculating common divisors of two numbers

Get all common divisors

```
const commonDivisors = divisor.getCommonDivisors(20, 100);
// [ 1, 20, 2, 10, 4, 5 ]
const sortedCommonDivisors = divisor.getCommonDivisors(20, 100, {
sort: 'desc', // supports 'asc' | 'desc'
});
// [ 20, 10, 5, 4, 2, 1 ]
```

Greatest common divisor - gcd

```
const gcd = divisor.greatestCommonDivisor(20, 100);
// 20
```

Least common multiple - lcm

```
const lcm = divisor.leastCommonMultiple(11, 67);
// 737
```

## Contributing

Please review code of conduct and contributing guide so that you can understand what actions will and will not be tolerated.

### Pull Request Guidelines

- The
`main`

branch is just a snapshot of the latest stable release. All development should be done in development branches.**Do not submit PRs against the**`main`

branch. - Work in the
`src`

folder and**DO NOT**checkin`dist`

in the commits. - It's OK to have multiple small commits as you work on the PR
- If adding a new feature add accompanying test case.
- If fixing bug,
- Add accompanying test case if applicable.
- Provide a detailed description of the bug in the PR.
- If you are resolving an opened issue add issue number in your PR title.

## License

Divisor is MIT licensed.