Skip to main content

Strong number program

In mathematics, a strong number is a number whose sum of the factorials of its digits is equal to the number itself. For example, 145 is a strong number because 1! + 4! + 5! = 145. In this article, we will write a C program to determine if a given number is a strong number or not.

Problem Statement

We need to implement a program that takes an integer as input and checks whether it is a strong number or not. The program should calculate the sum of the factorials of the digits of the number and compare it with the original number to decide if it is a strong number.

Example

Let's consider the number 145. The sum of the factorials of its digits will be: 1! + 4! + 5! = 1 + 24 + 120 = 145 Since the sum (145) is equal to the original number, 145 is a strong number.

Pseudocode

// Function to calculate the factorial of a given number
    function factorial(num)
        if num = 0
            return 1
        result = 1
        n = num
        while n ≠ 0
            result = result * n
            n = n - 1
        return result
    
    // Function to check if a number is a Strong Number
    function isStrongNo(num)
        n = num
        sum = 0
        while n ≠ 0
            digit = n % 10   // Get the last digit of the number
            sum = sum + factorial(digit)   // Add the factorial of the digit to the sum
            n = n / 10   // Remove the last digit from the number
        end while
    
        // Check if the sum is equal to the original number
        if sum = num
            print "Is Strong Number"
        else
            print "Is Not Strong Number"
        end if
    
    // Main function
    function main()
        // Test cases
        isStrongNo(12)   // Output: Is Not Strong Number
        isStrongNo(145)  // Output: Is Strong Number
        isStrongNo(1)    // Output: Is Strong Number
    end function
    
    // Call the main function to start the program
    main()
  1. Define a function factorial that takes an integer num and returns the factorial of num.
  2. Inside the factorial function, initialize a variable result to 1.
  3. Run a loop from num down to 1 (inclusive) and in each iteration, multiply result by the current value of num.
  4. Return the result after the loop ends.
  5. Define a function isStrongNo that takes an integer num.
  6. Inside the isStrongNo function, initialize variables n, digit, and sum to store the original number, the last digit, and the sum of factorials, respectively.
  7. Run a loop until n is not equal to 0.
  8. Inside the loop, get the last digit of n and store it in the digit variable.
  9. Add the factorial of digit to the sum variable using the factorial function.
  10. Remove the last digit from n.
  11. After the loop ends, check if sum is equal to the original number.
  12. If sum is equal to num, print that it is a "Strong Number"; otherwise, print that it is "Not a Strong Number."

Algorithm

  1. Define the factorial function as described in the pseudocode.
  2. Define the isStrongNo function as described in the pseudocode.
  3. Inside the main function, call isStrongNo for different test cases, such as 12, 145, and 1.
  4. Print the result for each test case.

Here given code implementation process.

//  C program 
//  Strong number program
#include <stdio.h>

// Return the factorial of given number
int factorial(int num)
{
	if (num == 0)
	{
		// Base case 
		return 1;
	}
	int n = num;
	int result = 1;
	while (n != 0)
	{
		result *= n;
		n--;
	}
	return result;
}
void isStrongNo(int num)
{
	int n = num;
	int digit = 0;
	int sum = 0;
	// Execute loop until when the value of n is not zero
	while (n != 0)
	{
		// get last digit
		digit = n % 10;
		// Sum of digit factorial
		sum += factorial(digit);
		// Remove last digit
		n /= 10;
	}
	// Display given number
	printf("\n Number : %d", num);
	if (sum == num)
	{
		printf("\n Is Strong Number \n");
	}
	else
	{
		printf("\n Is Not Strong Number\n");
	}
}
int main(int argc, char
	const *argv[])
{
	// Test case
	//  12 (1!+2!)
	//  12 != 3
	isStrongNo(12);
	//  145 (1! + 4! + 5!) (1 +  +)
	isStrongNo(145);
	// 19   (1+9)   => 10 (1+0) => 1
	isStrongNo(1);
	return 0;
}

Output

 Number : 12
 Is Not Strong Number

 Number : 145
 Is Strong Number

 Number : 1
 Is Strong Number
/*
  Java program
  Strong number program
*/
public class StrongNumber
{
	// Return the factorial of given number
	public int factorial(int num)
	{
		if (num == 0)
		{
			// Base case 
			return 1;
		}
		int n = num;
		int result = 1;
		while (n != 0)
		{
			result *= n;
			n--;
		}
		return result;
	}
	public void isStrongNo(int num)
	{
		int n = num;
		int digit = 0;
		int sum = 0;
		// Execute loop until when the value of n is not zero
		while (n != 0)
		{
			// Get last digit
			digit = n % 10;
			// Sum of digit factorial
			sum += factorial(digit);
			// Remove last digit
			n /= 10;
		}
		// Display given number
		System.out.print("\n Number : " + num);
		if (sum == num)
		{
			System.out.print("\n Is Strong Number \n");
		}
		else
		{
			System.out.print("\n Is Not Strong Number\n");
		}
	}
	public static void main(String[] args)
	{
		StrongNumber task = new StrongNumber();
		// Test case
		//  12 (1!+2!)
		//  12 != 3
		task.isStrongNo(12);
		//  145 (1! + 4! + 5!) (1 +  +)
		task.isStrongNo(145);
		// 19   (1+9)   => 10 (1+0) => 1
		task.isStrongNo(1);
	}
}

Output

 Number : 12
 Is Not Strong Number

 Number : 145
 Is Strong Number

 Number : 1
 Is Strong Number
// Include header file
#include <iostream>
using namespace std;

/*
  C++ program
  Strong number program
*/

class StrongNumber
{
	public:
		// Return the factorial of given number
		int factorial(int num)
		{
			if (num == 0)
			{
				// Base case
				return 1;
			}
			int n = num;
			int result = 1;
			while (n != 0)
			{
				result *= n;
				n--;
			}
			return result;
		}
	void isStrongNo(int num)
	{
		int n = num;
		int digit = 0;
		int sum = 0;
		// Execute loop until when the value of n is not zero
		while (n != 0)
		{
			// Get last digit
			digit = n % 10;
			// Sum of digit factorial
			sum += this->factorial(digit);
			// Remove last digit
			n /= 10;
		}
		// Display given number
		cout << "\n Number : " << num;
		if (sum == num)
		{
			cout << "\n Is Strong Number \n";
		}
		else
		{
			cout << "\n Is Not Strong Number\n";
		}
	}
};
int main()
{
	StrongNumber task = StrongNumber();
	// Test case
	//  12 (1!+2!)
	//  12 != 3
	task.isStrongNo(12);
	//  145 (1! + 4! + 5!) (1 +  +)
	task.isStrongNo(145);
	// 19   (1+9)   => 10 (1+0) => 1
	task.isStrongNo(1);
	return 0;
}

Output

 Number : 12
 Is Not Strong Number

 Number : 145
 Is Strong Number

 Number : 1
 Is Strong Number
// Include namespace system
using System;
/*
  C# program
  Strong number program
*/
public class StrongNumber
{
	// Return the factorial of given number
	public int factorial(int num)
	{
		if (num == 0)
		{
			// Base case
			return 1;
		}
		int n = num;
		int result = 1;
		while (n != 0)
		{
			result *= n;
			n--;
		}
		return result;
	}
	public void isStrongNo(int num)
	{
		int n = num;
		int digit = 0;
		int sum = 0;
		// Execute loop until when the value of n is not zero
		while (n != 0)
		{
			// Get last digit
			digit = n % 10;
			// Sum of digit factorial
			sum += factorial(digit);
			// Remove last digit
			n /= 10;
		}
		// Display given number
		Console.Write("\n Number : " + num);
		if (sum == num)
		{
			Console.Write("\n Is Strong Number \n");
		}
		else
		{
			Console.Write("\n Is Not Strong Number\n");
		}
	}
	public static void Main(String[] args)
	{
		StrongNumber task = new StrongNumber();
		// Test case
		//  12 (1!+2!)
		//  12 != 3
		task.isStrongNo(12);
		//  145 (1! + 4! + 5!) (1 +  +)
		task.isStrongNo(145);
		// 19   (1+9)   => 10 (1+0) => 1
		task.isStrongNo(1);
	}
}

Output

 Number : 12
 Is Not Strong Number

 Number : 145
 Is Strong Number

 Number : 1
 Is Strong Number
<?php
/*
  Php program
  Strong number program
*/
class StrongNumber
{
	// Return the factorial of given number
	public	function factorial($num)
	{
		if ($num == 0)
		{
			// Base case
			return 1;
		}
		$n = $num;
		$result = 1;
		while ($n != 0)
		{
			$result *= $n;
			$n--;
		}
		return $result;
	}
	public	function isStrongNo($num)
	{
		$n = $num;
		$digit = 0;
		$sum = 0;
		// Execute loop until when the value of n is not zero
		while ($n != 0)
		{
			// Get last digit
			$digit = $n % 10;
			// Sum of digit factorial
			$sum += $this->factorial($digit);
			// Remove last digit
			$n = intval($n / 10);
		}
		// Display given number
		echo "\n Number : ". $num;
		if ($sum == $num)
		{
			echo "\n Is Strong Number \n";
		}
		else
		{
			echo "\n Is Not Strong Number\n";
		}
	}
}

function main()
{
	$task = new StrongNumber();
	// Test case
	//  12 (1!+2!)
	//  12 != 3
	$task->isStrongNo(12);
	//  145 (1! + 4! + 5!) (1 +  +)
	$task->isStrongNo(145);
	// 19   (1+9)   => 10 (1+0) => 1
	$task->isStrongNo(1);
}
main();

Output

 Number : 12
 Is Not Strong Number

 Number : 145
 Is Strong Number

 Number : 1
 Is Strong Number
/*
  Node Js program
  Strong number program
*/
class StrongNumber
{
	// Return the factorial of given number
	factorial(num)
	{
		if (num == 0)
		{
			// Base case
			return 1;
		}
		var n = num;
		var result = 1;
		while (n != 0)
		{
			result *= n;
			n--;
		}
		return result;
	}
	isStrongNo(num)
	{
		var n = num;
		var digit = 0;
		var sum = 0;
		// Execute loop until when the value of n is not zero
		while (n != 0)
		{
			// Get last digit
			digit = n % 10;
			// Sum of digit factorial
			sum += this.factorial(digit);
			// Remove last digit
			n = parseInt(n / 10);
		}
		// Display given number
		process.stdout.write("\n Number : " + num);
		if (sum == num)
		{
			process.stdout.write("\n Is Strong Number \n");
		}
		else
		{
			process.stdout.write("\n Is Not Strong Number\n");
		}
	}
}

function main()
{
	var task = new StrongNumber();
	// Test case
	//  12 (1!+2!)
	//  12 != 3
	task.isStrongNo(12);
	//  145 (1! + 4! + 5!) (1 +  +)
	task.isStrongNo(145);
	// 19   (1+9)   => 10 (1+0) => 1
	task.isStrongNo(1);
}
main();

Output

 Number : 12
 Is Not Strong Number

 Number : 145
 Is Strong Number

 Number : 1
 Is Strong Number
#   Python 3 program
#   Strong number program

class StrongNumber :
	#  Return the factorial of given number
	def factorial(self, num) :
		if (num == 0) :
			#  Base case 
			return 1
		
		n = num
		result = 1
		while (n != 0) :
			result *= n
			n -= 1
		
		return result
	
	def isStrongNo(self, num) :
		n = num
		digit = 0
		sum = 0
		#  Execute loop until when the value of n is not zero
		while (n != 0) :
			#  Get last digit
			digit = n % 10
			#  Sum of digit factorial
			sum += self.factorial(digit)
			n = int(n /
				#  Remove last digit
				10)
		
		#  Display given number
		print("\n Number : ", num, end = "")
		if (sum == num) :
			print("\n Is Strong Number ")
		else :
			print("\n Is Not Strong Number")
		
	

def main() :
	task = StrongNumber()
	#  Test case
	#   12 (1!+2!)
	#   12 != 3
	task.isStrongNo(12)
	#   145 (1! + 4! + 5!) (1 +  +)
	task.isStrongNo(145)
	#  19   (1+9)   => 10 (1+0) => 1
	task.isStrongNo(1)

if __name__ == "__main__": main()

Output

 Number :  12
 Is Not Strong Number

 Number :  145
 Is Strong Number

 Number :  1
 Is Strong Number
#   Ruby program
#   Strong number program

class StrongNumber 
	#  Return the factorial of given number
	def factorial(num) 
		if (num == 0) 
			#  Base case 
			return 1
		end

		n = num
		result = 1
		while (n != 0) 
			result *= n
			n -= 1
		end

		return result
	end

	def isStrongNo(num) 
		n = num
		digit = 0
		sum = 0
		#  Execute loop until when the value of n is not zero
		while (n != 0) 
			#  Get last digit
			digit = n % 10
			#  Sum of digit factorial
			sum += self.factorial(digit)
			#  Remove last digit
			n /= 10
		end

		#  Display given number
		print("\n Number : ", num)
		if (sum == num) 
			print("\n Is Strong Number \n")
		else 
			print("\n Is Not Strong Number\n")
		end

	end

end

def main() 
	task = StrongNumber.new()
	#  Test case
	#   12 (1!+2!)
	#   12 != 3
	task.isStrongNo(12)
	#   145 (1! + 4! + 5!) (1 +  +)
	task.isStrongNo(145)
	#  19   (1+9)   => 10 (1+0) => 1
	task.isStrongNo(1)
end

main()

Output

 Number : 12
 Is Not Strong Number

 Number : 145
 Is Strong Number 

 Number : 1
 Is Strong Number 
/*
  Scala program
  Strong number program
*/
class StrongNumber
{
	// Return the factorial of given number
	def factorial(num: Int): Int = {
		if (num == 0)
		{
			// Base case
			return 1;
		}
		var n: Int = num;
		var result: Int = 1;
		while (n != 0)
		{
			result *= n;
			n -= 1;
		}
		return result;
	}
	def isStrongNo(num: Int): Unit = {
		var n: Int = num;
		var digit: Int = 0;
		var sum: Int = 0;
		// Execute loop until when the value of n is not zero
		while (n != 0)
		{
			// Get last digit
			digit = n % 10;
			// Sum of digit factorial
			sum += this.factorial(digit);
			// Remove last digit
			n = (n / 10).toInt;
		}
		// Display given number
		print("\n Number : " + num);
		if (sum == num)
		{
			print("\n Is Strong Number \n");
		}
		else
		{
			print("\n Is Not Strong Number\n");
		}
	}
}
object Main
{
	def main(args: Array[String]): Unit = {
		var task: StrongNumber = new StrongNumber();
		// Test case
		//  12 (1!+2!)
		//  12 != 3
		task.isStrongNo(12);
		//  145 (1! + 4! + 5!) (1 +  +)
		task.isStrongNo(145);
		// 19   (1+9)   => 10 (1+0) => 1
		task.isStrongNo(1);
	}
}

Output

 Number : 12
 Is Not Strong Number

 Number : 145
 Is Strong Number

 Number : 1
 Is Strong Number
/*
  Swift 4 program
  Strong number program
*/
class StrongNumber
{
	// Return the factorial of given number
	func factorial(_ num: Int)->Int
	{
		if (num == 0)
		{
			// Base case
			return 1;
		}
		var n: Int = num;
		var result: Int = 1;
		while (n  != 0)
		{
			result *= n;
			n -= 1;
		}
		return result;
	}
	func isStrongNo(_ num: Int)
	{
		var n: Int = num;
		var digit: Int = 0;
		var sum: Int = 0;
		// Execute loop until when the value of n is not zero
		while (n  != 0)
		{
			// Get last digit
			digit = n % 10;
			// Sum of digit factorial
			sum += self.factorial(digit);
			// Remove last digit
			n /= 10;
		}
		// Display given number
		print("\n Number : ", num, terminator: "");
		if (sum == num)
		{
			print("\n Is Strong Number ");
		}
		else
		{
			print("\n Is Not Strong Number");
		}
	}
}
func main()
{
	let task: StrongNumber = StrongNumber();
	// Test case
	//  12 (1!+2!)
	//  12  != 3
	task.isStrongNo(12);
	//  145 (1! + 4! + 5!) (1 +  +)
	task.isStrongNo(145);
	// 19   (1+9)   => 10 (1+0) => 1
	task.isStrongNo(1);
}
main();

Output

 Number :  12
 Is Not Strong Number

 Number :  145
 Is Strong Number

 Number :  1
 Is Strong Number
/*
  Kotlin program
  Strong number program
*/
class StrongNumber
{
	// Return the factorial of given number
	fun factorial(num: Int): Int
	{
		if (num == 0)
		{
			// Base case
			return 1;
		}
		var n: Int = num;
		var result: Int = 1;
		while (n != 0)
		{
			result *= n;
			n -= 1;
		}
		return result;
	}
	fun isStrongNo(num: Int): Unit
	{
		var n: Int = num;
		var digit: Int ;
		var sum: Int = 0;
		// Execute loop until when the value of n is not zero
		while (n != 0)
		{
			// Get last digit
			digit = n % 10;
			// Sum of digit factorial
			sum += this.factorial(digit);
			// Remove last digit
			n /= 10;
		}
		// Display given number
		print("\n Number : " + num);
		if (sum == num)
		{
			print("\n Is Strong Number \n");
		}
		else
		{
			print("\n Is Not Strong Number\n");
		}
	}
}
fun main(args: Array < String > ): Unit
{
	var task: StrongNumber = StrongNumber();
	// Test case
	//  12 (1!+2!)
	//  12 != 3
	task.isStrongNo(12);
	//  145 (1! + 4! + 5!) (1 +  +)
	task.isStrongNo(145);
	// 19   (1+9)   => 10 (1+0) => 1
	task.isStrongNo(1);
}

Output

 Number : 12
 Is Not Strong Number

 Number : 145
 Is Strong Number

 Number : 1
 Is Strong Number

Resultant Output Explanation

In this above C program executes the isStrongNo function for three test cases: 12, 145, and 1.

  1. For the test case 12, the output is "Is Not Strong Number" because 1! + 2! = 1 + 2 = 3, which is not equal to 12.
  2. For the test case 145, the output is "Is Strong Number" because 1! + 4! + 5! = 1 + 24 + 120 = 145, which is equal to the original number.
  3. For the test case 1, the output is "Is Strong Number" because the sum of the factorials of its digits is 1, which is equal to the original number.

Time Complexity

The time complexity of calculating the factorial of a number n is O(n) since the factorial function runs a loop from n down to 1. The loop inside the isStrongNo function runs for the number of digits in the input number, which is approximately log10(num). Therefore, the overall time complexity of the program is O(d * n), where d is the number of digits in the input number and n is the input number itself. In practice, since the number of digits is usually not very large, the algorithm performs quite efficiently.





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.

New Comment