Extra Long Factorials

Write a program to find the factorial of large numbers.

Example:

Input: n = 25
Output: 15511210043330985984000000

Approach

Java

import java.math.BigInteger;

public class ExtraLongFactorials {
    public static void main(String[] args) {
        int n = 25;
        extraLongFactorials(n);
    }

    static void extraLongFactorials(int n) {
        BigInteger fact = new BigInteger("1");
        for (int i = n; i >= 1; i--) {
            fact = fact.multiply(new BigInteger(String.valueOf(i)));
        }
        System.out.println(fact);

    }
}

C++

#include <bits/stdc++.h>
using namespace std;

//define the maximum
//number of digits
//that the factorail holds

#define MAX 10000
//function to numtiply the cuurent
//and update the result array
//and find the new size of the
//fatorial number
int factorial(int xint fact[], int size1)
{
    int carry = 0;
    //iterate till the end of size
    for (int i = 0i < size1i++)
    {
        int prod = fact[i] * x + carry;
        fact[i] = prod % 10;
        carry = prod / 10;
    }

    //while carry>0 increment the size
    while (carry)
    {
        fact[size1] = carry % 10;
        carry = carry / 10;
        size1++;
    }

    //return the new size
    return size1;
}

//function to find the factorial of a number
void factorial(int n)
{
    int fact[MAX];

    fact[0] = 1;
    int size1 = 1;

    for (int x = 2x <= nx++)
    {
        size1 = factorial(xfactsize1);
    }
    for (int i = size1 - 1i >= 0i--)
        cout << fact[i];
}

int main()
{
    int n = 25;
    factorial(n);
    return 0;
}


No comments:

Post a Comment