# 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
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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++

 `// CPP program to find all factorial numbers ` `// smaller than or equal to n. ` `#include ` `using` `namespace` `std; ` ` `  `void` `printFactorialNums(``int` `n) ` `{ ` `    ``int` `fact = 1; ` `    ``int` `x = 2; ` `    ``while` `(fact <= n) { ` `        ``cout << fact << ``" "``; ` ` `  `        ``// Compute next factorial  ` `        ``// using previous ` `        ``fact = fact * x; ` ` `  `        ``x++; ` `    ``} ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `n = 100; ` `    ``printFactorialNums(n); ` `    ``return` `0; ` `} `

/div>

## Java

 `// Java program to find all factorial numbers ` `// smaller than or equal to n. ` ` `  `class` `GFG ` `{ ` `    ``static` `void` `printFactorialNums(``int` `n) ` `    ``{ ` `        ``int` `fact = ``1``; ` `        ``int` `x = ``2``; ` `        ``while` `(fact <= n) ` `        ``{ ` `            ``System.out.print(fact + ``" "``); ` `     `  `            ``// Compute next factorial  ` `            ``// using previous ` `            ``fact = fact * x; ` `     `  `            ``x++; ` `        ``} ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `main (String[] args)  ` `    ``{ ` `        ``int` `n = ``100``; ` `        ``printFactorialNums(n); ` `    ``} ` `} ` ` `  `// This code is contributed by Anant Agarwal. `

## Python3

 `# Python3 program to find all factorial  ` `# numbers smaller than or equal to n. ` ` `  `def` `printFactorialNums( n): ` `    ``fact ``=` `1` `    ``x ``=` `2` `    ``while` `fact <``=` `n: ` `        ``print``(fact, end ``=` `" "``) ` `         `  `        ``# Compute next factorial ` `        ``# using previous ` `        ``fact ``=` `fact ``*` `x ` `         `  `        ``x ``+``=` `1` ` `  `# Driver code ` `n ``=` `100` `printFactorialNums(n) ` ` `  `# This code is contributed by "Abhishek Sharma 44" `

## C#

 `// C# program to find all factorial numbers ` `// smaller than or equal to n. ` `using` `System; ` ` `  `class` `GFG ` `{ ` `    ``static` `void` `printFactorialNums(``int` `n) ` `    ``{ ` `        ``int` `fact = 1; ` `        ``int` `x = 2; ` `        ``while` `(fact <= n) ` `        ``{ ` `            ``Console.Write(fact + ``" "``); ` `     `  `            ``// Compute next factorial  ` `            ``// using previous ` `            ``fact = fact * x; ` `     `  `            ``x++; ` `        ``} ` `    ``} ` `     `  `    ``// Driver code ` `    ``public` `static` `void` `Main ()  ` `    ``{ ` `        ``int` `n = 100; ` `        ``printFactorialNums(n); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## PHP

 ` `

Output:

```1 2 6 24
```

Time Complexity : O(n)

If there are multiple queries, then we can cache all previously computed factorial numbers to avoid re-computations.

## tags:

Mathematical factorial Mathematical factorial