Sha256: 64e634f9ce014ec400f4e9c058ceaa9659ae1bf72abe1e5d8fbf7c581491eb6d

Contents?: true

Size: 1.22 KB

Versions: 129

Compression:

Stored size: 1.22 KB

Contents

'use strict';

var PerfectNumbers = function() {

};

/**
 * Calculate all the divisors for a given number and return them as an array.
 * Note: the actual number is not include in the returned array.
 */
PerfectNumbers.prototype.getDivisors = function(number) {

  var i;
  var divs = new Array();

  // Accepts only natura numbers greater than 1.
  if (number <= 1) {
    return divs;
	}

  // 1 always divides everyone!
  divs.push(1);

  // Calculate the divisors up the the half of the number + 1
  for (i = 2; i <= number / 2; i++) {

    if (number % i === 0) {
      divs.push(i);
		}
  }

  return divs;
};

PerfectNumbers.prototype.classify = function(number) {

  var i, sum, result;

  // Check if the input is valid
  if (number <= 0) {
    return 'Classification is only possible for natural numbers.';
  }

  // Factorize the current number.
  var divsArray = this.getDivisors(number);

  // Sum the factors.
  sum = 0;
  for (i = 0; i < divsArray.length; i++) {
    sum = sum + divsArray[i];
  }

  // Check if the number is perfect.
  if (sum === number) {
    result = 'perfect';
  }
  else if (sum > number) {
    result = 'abundant';
  }
  else {
    result = 'deficient';
  }

  return result;
};

module.exports = PerfectNumbers;

Version data entries

129 entries across 129 versions & 1 rubygems

Version Path
trackler-2.2.1.37 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.36 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.35 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.34 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.33 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.32 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.31 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.30 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.29 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.28 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.27 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.26 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.25 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.24 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.23 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.22 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.21 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.20 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.19 tracks/javascript/exercises/perfect-numbers/example.js
trackler-2.2.1.18 tracks/javascript/exercises/perfect-numbers/example.js