Find all factorial numbers less than or equal to n
A number N is called a factorial number if it is the factorial of a positive integer. For example, the first few factorial numbers are
1, 2, 6, 24, 120, …
Given a number n, print all factorial numbers smaller than or equal to n.
Examples :
Input: n = 100
Output: 1 2 6 24
Input: n = 1500
Output: 1 2 6 24 120 720
A simple solution is to generate all factorials one by one until the generated factorial is greater than n.
An efficient solution is to find next factorial using previous factorial.
C++
#include <iostream>
using namespace std;
void printFactorialNums( int n)
{
int fact = 1;
int x = 2;
while (fact <= n) {
cout << fact << " " ;
fact = fact * x;
x++;
}
}
int main()
{
int n = 100;
printFactorialNums(n);
return 0;
}
|
Java
class GFG
{
static void printFactorialNums( int n)
{
int fact = 1 ;
int x = 2 ;
while (fact <= n)
{
System.out.print(fact + " " );
fact = fact * x;
x++;
}
}
public static void main (String[] args)
{
int n = 100 ;
printFactorialNums(n);
}
}
|
Python3
def printFactorialNums( n):
fact = 1
x = 2
while fact < = n:
print (fact, end = " " )
fact = fact * x
x + = 1
n = 100
printFactorialNums(n)
|
C#
using System;
class GFG
{
static void printFactorialNums( int n)
{
int fact = 1;
int x = 2;
while (fact <= n)
{
Console.Write(fact + " " );
fact = fact * x;
x++;
}
}
public static void Main ()
{
int n = 100;
printFactorialNums(n);
}
}
|
PHP
<?php
function printFactorialNums( $n )
{
$fact = 1;
$x = 2;
while ( $fact <= $n )
{
echo $fact , " " ;
$fact = $fact * $x ;
$x ++;
}
}
$n = 100;
echo printFactorialNums( $n );
?>
|
Javascript
<script>
function printFactorialNums(n)
{
let fact = 1;
let x = 2;
while (fact <= n) {
document.write(fact + " " );
fact = fact * x;
x++;
}
}
let n = 100;
printFactorialNums(n);
</script>
|
Time Complexity: O(x)
Auxiliary Space: O(1)
Another solution : we can print factorial of a number such that factorial <=n by recursion.
C++
#include <bits/stdc++.h>
using namespace std;
void PrintFactorialNums( int n, int fac, int i)
{
i++;
if (fac > n)
{
return ;
}
cout << fac << " " ;
PrintFactorialNums(n, fac * i, i);
}
int main()
{
int n = 100;
PrintFactorialNums(n, 1, 1);
return 0;
}
|
Java
import java.util.*;
class Main {
static void PrintFactorialNums( int n, int fac, int i) {
i++;
if (fac > n) {
return ;
}
System.out.print(fac + " " );
PrintFactorialNums(n, fac * i, i);
}
public static void main(String[] args) {
int n = 100 ;
PrintFactorialNums(n, 1 , 1 );
}
}
|
Python3
def print_factorial_nums(n, fac, i):
i + = 1
if fac > n:
return
print (fac, end = ' ' )
print_factorial_nums(n, fac * i, i)
if __name__ = = '__main__' :
n = 100
print_factorial_nums(n, 1 , 1 )
|
C#
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
class HelloWorld {
public static void PrintFactorialNums( int n, int fac, int i) {
i++;
if (fac > n) {
return ;
}
Console.Write(fac + " " );
PrintFactorialNums(n, fac * i, i);
}
static void Main() {
int n = 100;
PrintFactorialNums(n, 1, 1);
}
}
|
Javascript
temp= "" ;
function print_factorial_nums(n, fac, i) {
i += 1;
if (fac > n) {
return ;
}
temp = temp + fac + " " ;
print_factorial_nums(n, fac * i, i);
}
let n = 100;
print_factorial_nums(n, 1, 1);
console.log(temp);
|
Time Complexity: O(n)
Auxiliary Space: O(n)
If there are multiple queries, then we can cache all previously computed factorial numbers to avoid re-computations.
Last Updated :
17 Mar, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...