# Find sum of digits in factorial of a number

Here given code implementation process.

``````import java.util.Vector;
/*
Java program
Find sum of digits in factorial of a number
*/
public class Factorial
{
public void multiply(Vector < Integer > record, int v)
{
int carry = 0;
int product = 0;
for (int i = 0; i < record.size(); ++i)
{
product = record.get(i) * v + carry;
// Update value
record.set(i, product % 10);
carry = product / 10;
}
// When carry not zero
while (carry > 0)
{
// Remove last digit in carry
carry = carry / 10;
}
}
public void findFactorial(int n)
{
if (n < 0)
{
return;
}
Vector < Integer > record = new Vector < Integer > ();
int digitSum = 0;
// First element
// Find factorial
for (int v = 2; v <= n; ++v)
{
multiply(record, v);
}
System.out.println("\nGiven n   : " + n);
System.out.print("Factorial : ");
// Display calculated value
for (int i = record.size() - 1; i >= 0; --i)
{
// Sum of digits
digitSum += record.get(i);
System.out.print(record.get(i));
}
System.out.print("\nDigit Sum : " + digitSum);
}
public static void main(String[] args)
{
// Test
}
}``````

#### Output

``````Given n   : 25
Factorial : 15511210043330985984000000
Digit Sum : 72
Given n   : 65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum : 351``````
``````// Include header file
#include <iostream>
#include <vector>

using namespace std;
/*
C++ program
Find sum of digits in factorial of a number
*/
class Factorial
{
public: void multiply(vector < int > &record, int v)
{
int carry = 0;
int product = 0;
for (int i = 0; i < record.size(); ++i)
{
product = record.at(i) *v + carry;
// Update value
record.at(i) = product % 10;
carry = product / 10;
}
// When carry not zero
while (carry > 0)
{
record.push_back(carry % 10);
// Remove last digit in carry
carry = carry / 10;
}
}
void findFactorial(int n)
{
if (n < 0)
{
return;
}
vector < int > record;
int digitSum = 0;
// First element
record.push_back(1);
// Find factorial
for (int v = 2; v <= n; ++v)
{
this->multiply(record, v);
}
cout << "\nGiven n   : " << n << endl;
cout << "Factorial : ";
// Display calculated value
for (int i = record.size() - 1; i >= 0; --i)
{
// Sum of digits
digitSum += record.at(i);
cout << record.at(i);
}
cout << "\nDigit Sum : " << digitSum;
}
};
int main()
{
// Test
return 0;
}``````

#### Output

``````Given n   : 25
Factorial : 15511210043330985984000000
Digit Sum : 72
Given n   : 65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum : 351``````
``````// Include namespace system
using System;
using System.Collections.Generic;
/*
Csharp program
Find sum of digits in factorial of a number
*/
public class Factorial
{
public void multiply(List < int > record, int v)
{
int carry = 0;
int product = 0;
for (int i = 0; i < record.Count; ++i)
{
product = record[i] * v + carry;
// Update value
record[i] = product % 10;
carry = product / 10;
}
// When carry not zero
while (carry > 0)
{
// Remove last digit in carry
carry = carry / 10;
}
}
public void findFactorial(int n)
{
if (n < 0)
{
return;
}
List < int > record = new List < int > ();
int digitSum = 0;
// First element
// Find factorial
for (int v = 2; v <= n; ++v)
{
this.multiply(record, v);
}
Console.WriteLine("\nGiven n   : " + n);
Console.Write("Factorial : ");
// Display calculated value
for (int i = record.Count - 1; i >= 0; --i)
{
// Sum of digits
digitSum += record[i];
Console.Write(record[i]);
}
Console.Write("\nDigit Sum : " + digitSum);
}
public static void Main(String[] args)
{
// Test
}
}``````

#### Output

``````Given n   : 25
Factorial : 15511210043330985984000000
Digit Sum : 72
Given n   : 65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum : 351``````
``````package main
import "fmt"
/*
Go program
Find sum of digits in factorial of a number
*/
type Factorial struct {}
func getFactorial() * Factorial {
var me *Factorial = &Factorial {}
return me
}
func(this Factorial) multiply(record*[]int, v int) {
var carry int = 0
var product int = 0
for i := 0 ; i < len(*record) ; i++ {
product = (*record)[i] * v + carry
// Update value
(*record)[i] = product % 10
carry = product / 10
}
// When carry not zero
for (carry > 0) {
(*record) = append((*record), carry % 10)
// Remove last digit in carry
carry = carry / 10
}
}
func(this Factorial) findFactorial(n int) {
if n < 0 {
return
}
var record = make([]int,0)
var digitSum int = 0
// First element
record = append(record, 1)
// Find factorial
for v := 2 ; v <= n ; v++ {
this.multiply(&record, v)
}
fmt.Println("\nGiven n   : ", n)
fmt.Print("Factorial : ")
// Display calculated value
for i := len(record) - 1 ; i >= 0 ; i-- {
// Sum of digits
digitSum += record[i]
fmt.Print(record[i])
}
fmt.Print("\nDigit Sum : ", digitSum)
}
func main() {
var task * Factorial = getFactorial()
// Test
}``````

#### Output

``````Given n   : 25
Factorial : 15511210043330985984000000
Digit Sum : 72
Given n   : 65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum : 351``````
``````<?php
/*
Php program
Find sum of digits in factorial of a number
*/
class Factorial
{
public	function multiply(&\$record, \$v)
{
\$carry = 0;
\$product = 0;
for (\$i = 0; \$i < count(\$record); ++\$i)
{
\$product = \$record[\$i] * \$v + \$carry;
// Update value
\$record[\$i] = \$product % 10;
\$carry = (int)(\$product / 10);
}
// When carry not zero
while (\$carry > 0)
{
\$record[] = \$carry % 10;
// Remove last digit in carry
\$carry = (int)(\$carry / 10);
}
}
public	function findFactorial(\$n)
{
if (\$n < 0)
{
return;
}
\$record = array();
\$digitSum = 0;
// First element
\$record[] = 1;
// Find factorial
for (\$v = 2; \$v <= \$n; ++\$v)
{
\$this->multiply(\$record, \$v);
}
echo("\nGiven n   : ".\$n."\n");
echo("Factorial : ");
// Display calculated value
for (\$i = count(\$record) - 1; \$i >= 0; --\$i)
{
// Sum of digits
\$digitSum += \$record[\$i];
echo(\$record[\$i]);
}
echo("\nDigit Sum : ".\$digitSum);
}
}

function main()
{
// Test
}
main();``````

#### Output

``````Given n   : 25
Factorial : 15511210043330985984000000
Digit Sum : 72
Given n   : 65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum : 351``````
``````/*
Node JS program
Find sum of digits in factorial of a number
*/
class Factorial
{
multiply(record, v)
{
var carry = 0;
var product = 0;
for (var i = 0; i < record.length; ++i)
{
product = record[i] * v + carry;
// Update value
record[i] = product % 10;
carry = parseInt(product / 10);
}
// When carry not zero
while (carry > 0)
{
record.push(carry % 10);
// Remove last digit in carry
carry = parseInt(carry / 10);
}
}
findFactorial(n)
{
if (n < 0)
{
return;
}
var record = [];
var digitSum = 0;
// First element
record.push(1);
// Find factorial
for (var v = 2; v <= n; ++v)
{
this.multiply(record, v);
}
console.log("\nGiven n   : " + n);
process.stdout.write("Factorial : ");
// Display calculated value
for (var i = record.length - 1; i >= 0; --i)
{
// Sum of digits
digitSum += record[i];
process.stdout.write(""+record[i]);
}
process.stdout.write("\nDigit Sum : " + digitSum);
}
}

function main()
{
// Test
}
main();``````

#### Output

``````Given n   : 25
Factorial : 15511210043330985984000000
Digit Sum : 72
Given n   : 65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum : 351``````
``````#    Python 3 program
#    Find sum of digits in factorial of a number
class Factorial :
def multiply(self, record, v) :
carry = 0
product = 0
i = 0
while (i < len(record)) :
product = record[i] * v + carry
#  Update value
record[i] = product % 10
carry = int(product / 10)
i += 1

#  When carry not zero
while (carry > 0) :
record.append(carry % 10)
#  Remove last digit in carry
carry = int(carry / 10)

def findFactorial(self, n) :
if (n < 0) :
return

record = []
digitSum = 0
#  First element
record.append(1)
v = 2
#  Find factorial
while (v <= n) :
self.multiply(record, v)
v += 1

print("\nGiven n   : ", n)
print("Factorial : ", end = "")
i = len(record) - 1
#  Display calculated value
while (i >= 0) :
#  Sum of digits
digitSum += record[i]
print(record[i], end = "")
i -= 1

print("\nDigit Sum : ", digitSum, end = "")

def main() :
#  Test

if __name__ == "__main__": main()``````

#### Output

``````Given n   :  25
Factorial : 15511210043330985984000000
Digit Sum :  72
Given n   :  65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum :  351``````
``````#    Ruby program
#    Find sum of digits in factorial of a number
class Factorial
def multiply(record, v)
carry = 0
product = 0
i = 0
while (i < record.length)
product = record[i] * v + carry
#  Update value
record[i] = product % 10
carry = product / 10
i += 1
end

#  When carry not zero
while (carry > 0)
record.push(carry % 10)
#  Remove last digit in carry
carry = carry / 10
end

end

def findFactorial(n)
if (n < 0)
return
end

record = []
digitSum = 0
#  First element
record.push(1)
v = 2
#  Find factorial
while (v <= n)
self.multiply(record, v)
v += 1
end

print("\nGiven n   : ", n, "\n")
print("Factorial : ")
i = record.length - 1
#  Display calculated value
while (i >= 0)
#  Sum of digits
digitSum += record[i]
print(record[i])
i -= 1
end

print("\nDigit Sum : ", digitSum)
end

end

def main()
#  Test
end

main()``````

#### Output

``````Given n   : 25
Factorial : 15511210043330985984000000
Digit Sum : 72
Given n   : 65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum : 351``````
``````import scala.collection.mutable._;
/*
Scala program
Find sum of digits in factorial of a number
*/
class Factorial()
{
def multiply(record: ArrayBuffer[Int], v: Int): Unit = {
var carry: Int = 0;
var product: Int = 0;
var i: Int = 0;
while (i < record.size)
{
product = record(i) * v + carry;
// Update value
record(i) = product % 10;
carry = product / 10;
i += 1;
}
// When carry not zero
while (carry > 0)
{
record += carry % 10;
// Remove last digit in carry
carry = carry / 10;
}
}
def findFactorial(n: Int): Unit = {
if (n < 0)
{
return;
}
var record: ArrayBuffer[Int] = new ArrayBuffer[Int]();
var digitSum: Int = 0;
// First element
record += 1;
var v: Int = 2;
// Find factorial
while (v <= n)
{
multiply(record, v);
v += 1;
}
println("\nGiven n   : " + n);
print("Factorial : ");
var i: Int = record.size - 1;
// Display calculated value
while (i >= 0)
{
// Sum of digits
digitSum += record(i);
print(record(i));
i -= 1;
}
print("\nDigit Sum : " + digitSum);
}
}
object Main
{
def main(args: Array[String]): Unit = {
var task: Factorial = new Factorial();
// Test
}
}``````

#### Output

``````Given n   : 25
Factorial : 15511210043330985984000000
Digit Sum : 72
Given n   : 65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum : 351``````
``````import Foundation;
/*
Swift 4 program
Find sum of digits in factorial of a number
*/
class Factorial
{
func multiply(_ record: inout[Int], _ v: Int)
{
var carry: Int = 0;
var product: Int = 0;
var i: Int = 0;
while (i < record.count)
{
product = record[i] * v + carry;
// Update value
record[i] = product % 10;
carry = product / 10;
i += 1;
}
// When carry not zero
while (carry > 0)
{
record.append(carry % 10);
// Remove last digit in carry
carry = carry / 10;
}
}
func findFactorial(_ n: Int)
{
if (n < 0)
{
return;
}
var record: [Int] = [Int]();
var digitSum: Int = 0;
// First element
record.append(1);
var v: Int = 2;
// Find factorial
while (v <= n)
{
self.multiply(&record, v);
v += 1;
}
print("\nGiven n   : ", n);
print("Factorial : ", terminator: "");
var i: Int = record.count - 1;
// Display calculated value
while (i >= 0)
{
// Sum of digits
digitSum += record[i];
print(record[i], terminator: "");
i -= 1;
}
print("\nDigit Sum : ", digitSum, terminator: "");
}
}
func main()
{
// Test
}
main();``````

#### Output

``````Given n   :  25
Factorial : 15511210043330985984000000
Digit Sum :  72
Given n   :  65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum :  351``````
``````/*
Kotlin program
Find sum of digits in factorial of a number
*/
class Factorial
{
fun multiply(record: MutableList < Int >  , v : Int): Unit
{
var carry: Int = 0;
var product: Int;
var i: Int = 0;
while (i < record.size)
{
product = record[i] * v + carry;
// Update value
record[i] = product % 10;
carry = product / 10;
i += 1;
}
// When carry not zero
while (carry > 0)
{
// Remove last digit in carry
carry = carry / 10;
}
}
fun findFactorial(n: Int): Unit
{
if (n < 0)
{
return;
}
val record: MutableList < Int > = mutableListOf < Int > ();
var digitSum: Int = 0;
// First element
var v: Int = 2;
// Find factorial
while (v <= n)
{
this.multiply(record, v);
v += 1;
}
println("\nGiven n   : " + n);
print("Factorial : ");
var i: Int = record.size - 1;
// Display calculated value
while (i >= 0)
{
// Sum of digits
digitSum += record[i];
print(record[i]);
i -= 1;
}
print("\nDigit Sum : " + digitSum);
}
}
fun main(args: Array < String > ): Unit
{
// Test
}``````

#### Output

``````Given n   : 25
Factorial : 15511210043330985984000000
Digit Sum : 72
Given n   : 65
Factorial : 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000
Digit Sum : 351``````

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.