# Numbers whose factorials end with n zeros

Given an integer n, we need to find the number of positive integers whose factorial ends with n zeros.

Examples:

```Input : n = 1
Output : 5 6 7 8 9
Explanation: Here, 5! = 120, 6! = 720,
7! = 5040, 8! = 40320 and 9! = 362880.

Input : n = 2
Output : 10 11 12 13 14
```

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

Prerequisite : Trailing zeros in factorial.

Naive approach:We can just iterate through the range of integers and find the number of trailing zeros of all the numbers and print the numbers with n trailing zeros.

Efficient Approach:In this approach we use binary search. Use binary search for all the numbers in the range and get the first number with n trailing zeros. Find all the numbers with m trailing zeros after that number.

## C++

 `// Binary search based CPP program to find ` `// numbers with n trailing zeros. ` `#include ` `using` `namespace` `std; ` ` `  `// Function to calculate trailing zeros ` `int` `trailingZeroes(``int` `n) ` `{ ` `    ``int` `cnt = 0; ` `    ``while` `(n > 0) { ` `        ``n /= 5; ` `        ``cnt += n; ` `    ``} ` `    ``return` `cnt; ` `} ` ` `  `void` `binarySearch(``int` `n) ` `{ ` `    ``int` `low = 0; ` `    ``int` `high = 1e6; ``// range of numbers ` ` `  `    ``// binary search for first number with  ` `    ``// n trailing zeros ` `    ``while` `(low < high) { ` `        ``int` `mid = (low + high) / 2; ` `        ``int` `count = trailingZeroes(mid); ` `        ``if` `(count < n) ` `            ``low = mid + 1; ` `        ``else` `            ``high = mid; ` `    ``} ` ` `  `    ``// Print all numbers after low with n ` `    ``// trailing zeros. ` `    ``vector<``int``> result; ` `    ``while` `(trailingZeroes(low) == n) { ` `        ``result.push_back(low); ` `        ``low++; ` `    ``} ` ` `  `    ``// Print result ` `    ``for` `(``int` `i = 0; i < result.size(); i++)  ` `        ``cout << result[i] << ``" "``; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `n = 2; ` `    ``binarySearch(n); ` `    ``return` `0; ` `} `

## Java

 `// Binary search based Java  ` `// program to find numbers  ` `// with n trailing zeros. ` `import` `java.io.*; ` ` `  `class` `GFG { ` ` `  `    ``// Function to calculate  ` `    ``// trailing zeros ` `    ``static` `int` `trailingZeroes(``int` `n) ` `    ``{ ` `        ``int` `cnt = ``0``; ` `        ``while` `(n > ``0``)  ` `        ``{ ` `            ``n /= ``5``; ` `            ``cnt += n; ` `        ``} ` `        ``return` `cnt; ` `    ``} ` ` `  `    ``static` `void` `binarySearch(``int` `n) ` `    ``{ ` `        ``int` `low = ``0``; ` `         `  `        ``// range of numbers ` `        ``int` `high = ``1000000``; ` ` `  `        ``// binary search for first number  ` `        ``// with n trailing zeros ` `        ``while` `(low < high) { ` `            ``int` `mid = (low + high) / ``2``; ` `            ``int` `count = trailingZeroes(mid); ` `            ``if` `(count < n) ` `                ``low = mid + ``1``; ` `            ``else` `                ``high = mid; ` `        ``} ` ` `  `        ``// Print all numbers after low  ` `        ``// with n trailing zeros. ` `        ``int` `result[] = ``new` `int``[``1000``]; ` `        ``int` `k = ``0``; ` `        ``while` `(trailingZeroes(low) == n) { ` `            ``result[k] = low; ` `            ``k++; ` `            ``low++; ` `        ``} ` ` `  `        ``// Print result ` `        ``for` `(``int` `i = ``0``; i < k; i++) ` `            ``System.out.print(result[i] + ``" "``); ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String args[]) ` `    ``{ ` `        ``int` `n = ``3``; ` `        ``binarySearch(n); ` `    ``} ` `} ` ` `  `// This code is contributed  ` `// by Nikita Tiwari. `

## Python3

 `# Binary search based Python3 code to find ` `# numbers with n trailing zeros. ` ` `  `# Function to calculate trailing zeros ` `def` `trailingZeroes( n ): ` `    ``cnt ``=` `0` `    ``while` `n > ``0``: ` `        ``n ``=``int``(n``/``5``) ` `        ``cnt ``+``=` `n ` `    ``return` `cnt ` ` `  `def` `binarySearch( n ): ` `    ``low ``=` `0` `    ``high ``=` `1e6`  `# range of numbers ` `     `  `    ``# binary search for first number with ` `    ``# n trailing zeros ` `    ``while` `low < high: ` `        ``mid ``=` `int``((low ``+` `high) ``/` `2``) ` `        ``count ``=` `trailingZeroes(mid) ` `        ``if` `count < n: ` `            ``low ``=` `mid ``+` `1` `        ``else``: ` `            ``high ``=` `mid ` `             `  `    ``# Print all numbers after low with n ` `    ``# trailing zeros. ` `    ``result ``=` `list``() ` `    ``while` `trailingZeroes(low) ``=``=` `n: ` `        ``result.append(low) ` `        ``low``+``=``1` `     `  `    ``# Print result ` `    ``for` `i ``in` `range``(``len``(result)): ` `        ``print``(result[i],end``=``" "``) ` ` `  `# Driver code ` `n ``=` `2` `binarySearch(n) ` ` `  `# This code is contributed by "Sharad_Bhardwaj". `

## C#

 `// Binary search based C#  ` `// program to find numbers  ` `// with n trailing zeros. ` `using` `System; ` ` `  `class` `GFG { ` ` `  `    ``// Function to calculate  ` `    ``// trailing zeros ` `    ``static` `int` `trailingZeroes(``int` `n) ` `    ``{ ` `        ``int` `cnt = 0; ` `         `  `        ``while` `(n > 0)  ` `        ``{ ` `            ``n /= 5; ` `            ``cnt += n; ` `        ``} ` `         `  `        ``return` `cnt; ` `    ``} ` ` `  `    ``static` `void` `binarySearch(``int` `n) ` `    ``{ ` `        ``int` `low = 0; ` `         `  `        ``// range of numbers ` `        ``int` `high = 1000000; ` ` `  `        ``// binary search for first number  ` `        ``// with n trailing zeros ` `        ``while` `(low < high) { ` `            ``int` `mid = (low + high) / 2; ` `            ``int` `count = trailingZeroes(mid); ` `             `  `            ``if` `(count < n) ` `                ``low = mid + 1; ` `            ``else` `                ``high = mid; ` `        ``} ` ` `  `        ``// Print all numbers after low  ` `        ``// with n trailing zeros. ` `        ``int` `[]result = ``new` `int``[1000]; ` `        ``int` `k = 0; ` `        ``while` `(trailingZeroes(low) == n) { ` `            ``result[k] = low; ` `            ``k++; ` `            ``low++; ` `        ``} ` ` `  `        ``// Print result ` `        ``for` `(``int` `i = 0; i < k; i++) ` `            ``Console.Write(result[i] + ``" "``); ` `    ``} ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int` `n = 2; ` `         `  `        ``binarySearch(n); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## PHP

0)
{
\$n = intval(\$n / 5);
\$cnt += \$n;
}
return \$cnt;
}

function binarySearch(\$n)
{
\$low = 0;
\$high = 1e6; // range of numbers

// binary search for first number
// with n trailing zeros
while (\$low < \$high) { \$mid = intval((\$low + \$high) / 2); \$count = trailingZeroes(\$mid); if (\$count < \$n) \$low = \$mid + 1; else \$high = \$mid; } // Print all numbers after low with n // trailing zeros. \$result = array(); while (trailingZeroes(\$low) == \$n) { array_push(\$result, \$low); \$low++; } // Print result for (\$i = 0; \$i < sizeof(\$result); \$i++) echo \$result[\$i] . " "; } // Driver code \$n = 2; binarySearch(\$n); // This code is contributed by Ita_c ?>

Output:

```10 11 12 13 14
```

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.