Skip to content
Related Articles

Related Articles

Improve Article

Print factorials of a range in right aligned format

  • Last Updated : 11 May, 2021
Geek Week

Given two numbers m and n, the task is to find factorial of all numbers including m and n, and then print below format.
Examples: 
 

Input : 6 10
Output :
     720
    5040
   40320
  362880
 3628800

Input : 10 20
Output :
             3628800
            39916800
           479001600
          6227020800
         87178291200
       1307674368000
      20922789888000
     355687428096000
    6402373705728000
  121645100408832000
 2432902008176640000

 

We used the boost multiprecision library for store the factorial of large number and print the factorial with the setw() function. 
setw(int) -> setw(int) is a function is used for intention in the result.
 

C++




// CPP Program to print format of factorial
#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
#include <vector>
using namespace std;
using boost::multiprecision::cpp_int;
 
vector<cpp_int> find_factorial(int num1, int num2)
{
    // vector for store the result
    vector<cpp_int> vec;
 
    // variable for store the
    // each number factorial
    cpp_int fac = 1;
 
    // copy of first number
    int temp = num1;
 
    // found first number factorial
    while (1) {
        if (temp == 1)
            break;
        fac *= temp;
        temp--;
    }
     
    // push the first number in result vector
    vec.push_back(fac);
 
    // incerement the first number
    num1++;
 
    // found the all reaming number
    // factorial loop is working until
    // all required number factorial founded
    while (num1 <= num2) {
        fac *= num1;
 
        // store the result of factorial
        vec.push_back(fac);
 
        // incerement the first number
        num1++;
    }
     
    // return the result
    return (vec);
}
 
// function for print the result
void print_format(vector<cpp_int>& result)
{
    // setw() is used for fill the blank
    // right is used for right justification of data
    int digits = result.back().str().size();
     
    for (int i = 0; i < result.size(); i++) {
         cout <<  setw(digits + 1) << 
                    right << result[i] <<  endl;
    }
}
 
// Driver function
int main()
{
     
    // number which found the factorial
    // of between range
    int m = 10, n = 20;
 
    // store the result of factorial
    vector<cpp_int> result_fac;
 
    // function for found factorial
    result_fac = find_factorial(m, n);
 
    // function for print format
    print_format(result_fac);
 
    return 0;
}

PHP




<?PHP
// PHP Program to print
// format of factorial
 
function find_factorial($num1,
                        $num2)
{
    // vector for store
    // the result
    $vec;
    $t = 0;
 
    // variable for store the
    // each number factorial
    $fac = 1;
 
    // copy of first number
    $temp = $num1;
 
    // found first
    // number factorial
    while (1)
    {
        if ($temp == 1)
            break;
        $fac *= $temp;
        $temp--;
    }
     
    // push the first number
    // in result vector
    $vec[$t++] = $fac;
 
    // incerement the
    // first number
    $num1++;
 
    // found the all reaming
    // number factorial loop
    // is working until all
    // required number
    // factorial founded
    while ($num1 <= $num2)
    {
        $fac *= $num1;
 
        // store the result
        // of factorial
        $vec[$t++] = $fac;
 
        // incerement
        // the first number
        $num1++;
    }
     
    // return the result
    return ($vec);
}
 
// function for
// print the result
function print_format($result)
{
    // setw() is used for fill
    // the blank right is used
    // for right justification
    // of data
    $x = count($result);
    $digits = strlen((string)$result[$x - 1]);
     
    for ($i = 0; $i < $x; $i++)
    {
        echo str_pad($result[$i], ($digits + 1),
                      " ", STR_PAD_LEFT) . "\n";
    }
}
 
// Driver Code
 
// number which found
// the factorial
// of between range
$m = 10;
$n = 20;
 
// store the result
// of factorial
$result_fac;
 
// function for
// found factorial
$result_fac = find_factorial($m, $n);
 
// function for
// print format
print_format($result_fac);
 
// This code is contributed
// by mits
?>

Javascript




<script>
 
// Javascript Program to print
// format of factorial
 
function find_factorial(num1, num2)
{
    // vector for store
    // the result
    let vec = [];
    let t = 0;
 
    // variable for store the
    // each number factorial
    let fac = 1;
 
    // copy of first number
    let temp = num1;
 
    // found first
    // number factorial
    while (1)
    {
        if (temp == 1)
            break;
        fac *= temp;
        temp--;
    }
     
    // push the first number
    // in result vector
    vec[t++] = fac;
 
    // incerement the
    // first number
    num1++;
 
    // found the all reaming
    // number factorial loop
    // is working until all
    // required number
    // factorial founded
    while (num1 <= num2)
    {
        fac *= num1;
 
        // store the result
        // of factorial
        vec[t++] = fac;
 
        // incerement
        // the first number
        num1++;
    }
     
    // return the result
    return (vec);
}
 
// function for
// print the result
function print_format(result)
{
    // setw() is used for fill
    // the blank right is used
    // for right justification
    // of data
    let x = result.length;
    let digits = String(result[x - 1]).length;
     
    for (let i = 0; i < x; i++)
    {
    result[i] = new Array(x - i).fill(" ").join(" ") +
    result[i];
      document.write(String(result[i]) + "<br>");
    }
}
 
// Driver Code
 
// number which found
// the factorial
// of between range
let m = 10;
let n = 20;
 
// store the result
// of factorial
let result_fac;
 
// function for
// found factorial
result_fac = find_factorial(m, n);
 
// function for
// print format
print_format(result_fac);
 
// This code is contributed
// by gfgking
 
</script>

Output:  

             3628800
            39916800
           479001600
          6227020800
         87178291200
       1307674368000
      20922789888000
     355687428096000
    6402373705728000
  121645100408832000
 2432902008176640000

 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :