Skip to content

dsernst/pythagorean-triples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pythagorean-triples

NPM Version Build Status Coverage Status

Install

$ npm install pythagorean-triples
var triples = require('pythagorean-triples');

Usage

triples.euclid(m, n)

Generates a Pythagorean triple, using Euclid's formula a = m^2 - n^2, b = 2mn, c = m^2 + n^2.

The triple is sorted numerically a < b < c.

console.log(triples.euclid(2, 1)); // [3, 4, 5]
console.log(triples.euclid(3, 2)); // [5, 12, 13]

triples.upToM(m)

Generates all the triples for integers m and n where 1 <= n < m.

console.log(triples.upToM(4));
[
  [ 3, 4, 5 ],
  [ 6, 8, 10 ],
  [ 5, 12, 13 ],
  [ 8, 15, 17 ],
  [ 12, 16, 20 ],
  [ 7, 24, 25 ]
]

triples.upToSum(sum)

Generates all the triples where a + b + c <= sum.

console.log(triples.upToSum(35))
[
  [ 3, 4, 5 ],
  [ 6, 8, 10 ],
  [ 5, 12, 13 ],
]

triples.isTriple(triple)

Checks if the given triple is a valid triple:

  • array with three values
  • all values positive integers
  • can make a right angle: a^2 + b^2 = c^2
console.log(triples.isTriple([3, 4, 5]); //true
console.log(triples.isTriple([5, 12, 13]); // true
console.log(triples.isTriple('5, 12, 13'); // false, not an array
console.log(triples.isTriple([5, 13]); // false, too few values
console.log(triples.isTriple([5, 12, 13, 15]); // false, too many values
console.log(triples.isTriple([1.5, 2, 2.5]); // false, non-integers
console.log(triples.isTriple([-5, 12, 13]); // false, not all positive values
console.log(triples.isTriple([0, 7, 7]); // false, not all positive values
console.log(triples.isTriple([5, 12, 15]); // false, cannot make a right angle

triples.isPrimitive(triple)

Checks if the given triple is primitive. A triple is primitive if all values are coprime, which means their greatest common divisor is 1.

console.log(triples.isPrimitive([3, 4, 5]); //true
console.log(triples.isPrimitive([6, 8, 10]); // false

Tests

To run the test suite, first install the dependencies, then run npm test:

$ npm install
$ npm test

Releases

No releases published

Packages

No packages published