mirror of
https://bitbucket.org/Mattrixwv/typescriptclasses.git
synced 2025-12-06 18:33:59 -05:00
Added function to get factorial of number
This commit is contained in:
@@ -642,3 +642,19 @@ export function gcdBig(num1: bigint, num2: bigint){
|
||||
}
|
||||
return num1 | num2;
|
||||
}
|
||||
|
||||
//Return the factorial of the number passed in
|
||||
export function factorial(num: number): number{
|
||||
let fact: number = 1;
|
||||
for(let cnt = 1;cnt <= num;++cnt){
|
||||
fact *= cnt;
|
||||
}
|
||||
return fact;
|
||||
}
|
||||
export function factorialBig(num: bigint): bigint{
|
||||
let fact: bigint = 1n;
|
||||
for(let cnt = 1n;cnt <= num;++cnt){
|
||||
fact *= cnt;
|
||||
}
|
||||
return fact;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ Copyright (C) 2021 Matthew Ellison
|
||||
|
||||
import assert = require("assert");
|
||||
import { arrayEquals, getAllFib, getAllFibBig, getFactors, getFactorsBig, getPrimes, getPrimesBig, getNumPrimes, getNumPrimesBig,
|
||||
sqrtBig, getSum, getSumBig, getProd, getProdBig, getDivisors, getDivisorsBig } from "./Algorithms";
|
||||
sqrtBig, getSum, getSumBig, getProd, getProdBig, getDivisors, getDivisorsBig, factorial, factorialBig } from "./Algorithms";
|
||||
|
||||
|
||||
function testArrayEquals(){
|
||||
@@ -205,6 +205,7 @@ function testGetSum(){
|
||||
|
||||
console.log("getSum passed");
|
||||
}
|
||||
|
||||
function testGetProd(){
|
||||
//Test 1
|
||||
let correctAnswer: number = 0;
|
||||
@@ -226,6 +227,32 @@ function testGetProd(){
|
||||
console.log("getProd passed");
|
||||
}
|
||||
|
||||
function testFactorial(){
|
||||
//Test 1
|
||||
let num: number = 1;
|
||||
let correctAnswer: number = 1;
|
||||
let answer: number = factorial(num);
|
||||
assert.ok((correctAnswer == answer), "factorial number 1 failed");
|
||||
//Test 2
|
||||
num = 10;
|
||||
correctAnswer = 3628800;
|
||||
answer = factorial(num);
|
||||
assert.ok((correctAnswer == answer), "factorial number 2 failed");
|
||||
//Test 3
|
||||
num = -5;
|
||||
correctAnswer = 1;
|
||||
answer = factorial(num);
|
||||
assert.ok((correctAnswer == answer), "factorial number 3 failed");
|
||||
|
||||
//Test 4
|
||||
let numBig: bigint = 1n;
|
||||
let correctAnswerBig: bigint = 1n;
|
||||
let answerBig = factorialBig(numBig);
|
||||
assert.ok((correctAnswerBig == answerBig), "factorialBig number 1 failed");
|
||||
|
||||
console.log("factorial passed");
|
||||
}
|
||||
|
||||
|
||||
//Run all of the tests
|
||||
testArrayEquals();
|
||||
@@ -237,3 +264,4 @@ testGetFactors();
|
||||
testGetDivisors();
|
||||
testGetSum();
|
||||
testGetProd();
|
||||
testFactorial();
|
||||
|
||||
Reference in New Issue
Block a user