# Print all numbers up to N having product of digits equal to K

Given two integers N and K, the task is to print all the numbers from the range [1, N] whose product of digits is equal to K. If no such number is found, then print “-1”.

Examples:

Input: N =100, K = 25
Output: 55
Explanation: There is only a single number 55 whose product of digits is equal to K.

Input: N = 500, K = 10
Output: 25 52 125 152 215 251

Approach: Follow the steps below to solve the problem:

• Initialize a variable, say flag, to store whether any number satisfying the given conditions exists or not.
• Declare a function, productOfDigits(), to find the product of digits of the number.
• Iterate over the range [1, N]:
• If the product of digits of arr[i] is equal to K, print that number and set flag = 1.
• If flag is equal to 0, which means that no such number is found in the range [1, N]. Therefore, print “-1”.

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach`   `#include ` `using` `namespace` `std;`   `// Function to find the product` `// of digits of a number` `int` `productOfDigits(``int` `N)` `{` `    ``// Stores the product of` `    ``// digits of a number` `    ``int` `product = 1;`   `    ``while` `(N != 0) {` `        ``product = product * (N % 10);` `        ``N = N / 10;` `    ``}`   `    ``// Return the product` `    ``return` `product;` `}`   `// Function to print all numbers upto` `// N having product of digits equal to K` `void` `productOfDigitsK(``int` `N, ``int` `K)` `{` `    ``// Stores whether any number satisfying` `    ``// the given conditions exists or not` `    ``int` `flag = 0;`   `    ``// Iterate over the range [1, N]` `    ``for` `(``int` `i = 1; i <= N; ++i) {`   `        ``// If product of digits of` `        ``// arr[i] is equal to K or not` `        ``if` `(K == productOfDigits(i)) {`   `            ``// Print that number` `            ``cout << i << ``" "``;` `            ``flag = 1;` `        ``}` `    ``}`   `    ``// If no numbers are found` `    ``if` `(flag == 0)` `        ``cout << ``"-1"``;` `}`   `// Driver Code` `int` `main()` `{` `    ``// Given value of N & K` `    ``int` `N = 500, K = 10;`   `    ``// Function call to print all numbers` `    ``// from [1, N] with product of digits K` `    ``productOfDigitsK(N, K);` `}`

## Java

 `// Java Program to implement` `// the above approach` `import` `java.io.*;` `import` `java.util.*;`   `class` `GFG {`   `  ``// Function to find the product` `  ``// of digits of a number` `  ``static` `int` `productOfDigits(``int` `N)` `  ``{` `    `  `    ``// Stores the product of` `    ``// digits of a number` `    ``int` `product = ``1``;`   `    ``while` `(N != ``0``) {` `      ``product = product * (N % ``10``);` `      ``N = N / ``10``;` `    ``}`   `    ``// Return the product` `    ``return` `product;` `  ``}`   `  ``// Function to print all numbers upto` `  ``// N having product of digits equal to K` `  ``static` `void` `productOfDigitsK(``int` `N, ``int` `K)` `  ``{` `    ``// Stores whether any number satisfying` `    ``// the given conditions exists or not` `    ``int` `flag = ``0``;`   `    ``// Iterate over the range [1, N]` `    ``for` `(``int` `i = ``1``; i <= N; ++i) {`   `      ``// If product of digits of` `      ``// arr[i] is equal to K or not` `      ``if` `(K == productOfDigits(i)) {`   `        ``// Print that number` `        ``System.out.print(i + ``" "``);` `        ``flag = ``1``;` `      ``}` `    ``}`   `    ``// If no numbers are found` `    ``if` `(flag == ``0``)` `      ``System.out.println(-``1``);` `  ``}`   `  ``// Driver Code` `  ``public` `static` `void` `main(String[] args)` `  ``{` `    `  `    ``// Given value of N & K` `    ``int` `N = ``500``, K = ``10``;`   `    ``// Function call to print all numbers` `    ``// from [1, N] with product of digits K` `    ``productOfDigitsK(N, K);` `  ``}` `}`   `// This code is contribute by Kingash.`

## Python3

 `# Python3 program for the above approach`   `# Function to find the product` `# of digits of a number` `def` `productOfDigits(N) :`   `    ``# Stores the product of` `    ``# digits of a number` `    ``product ``=` `1``;`   `    ``while` `(N !``=` `0``) :` `        ``product ``=` `product ``*` `(N ``%` `10``);` `        ``N ``=` `N ``/``/` `10``;`   `    ``# Return the product` `    ``return` `product;`   `# Function to print all numbers upto` `# N having product of digits equal to K` `def` `productOfDigitsK(N, K) :`   `    ``# Stores whether any number satisfying` `    ``# the given conditions exists or not` `    ``flag ``=` `0``;`   `    ``# Iterate over the range [1, N]` `    ``for` `i ``in` `range``(``1``, N ``+` `1``) :`   `        ``# If product of digits of` `        ``# arr[i] is equal to K or not` `        ``if` `(K ``=``=` `productOfDigits(i)) :`   `            ``# Print that number` `            ``print``(i, end ``=``" "``);` `            ``flag ``=` `1``;`   `    ``# If no numbers are found` `    ``if` `(flag ``=``=` `0``) :` `        ``print``(``"-1"``);`   `# Driver Code` `if` `__name__ ``=``=` `"__main__"` `:` `    `  `    ``# Given value of N & K` `    ``N ``=` `500``; K ``=` `10``;`   `    ``# Function call to print all numbers` `    ``# from [1, N] with product of digits K` `    ``productOfDigitsK(N, K);` `    `  `    ``# This code is contributed by AnkThon`

## C#

 `// C# program for the above approach` `using` `System;` `class` `GFG` `{`   `  ``// Function to find the product` `  ``// of digits of a number` `  ``static` `int` `productOfDigits(``int` `N)` `  ``{`   `    ``// Stores the product of` `    ``// digits of a number` `    ``int` `product = 1;`   `    ``while` `(N != 0) {` `      ``product = product * (N % 10);` `      ``N = N / 10;` `    ``}`   `    ``// Return the product` `    ``return` `product;` `  ``}`   `  ``// Function to print all numbers upto` `  ``// N having product of digits equal to K` `  ``static` `void` `productOfDigitsK(``int` `N, ``int` `K)` `  ``{`   `    ``// Stores whether any number satisfying` `    ``// the given conditions exists or not` `    ``int` `flag = 0;`   `    ``// Iterate over the range [1, N]` `    ``for` `(``int` `i = 1; i <= N; ++i) {`   `      ``// If product of digits of` `      ``// arr[i] is equal to K or not` `      ``if` `(K == productOfDigits(i)) {`   `        ``// Print that number` `        ``Console.Write(i + ``" "``);` `        ``flag = 1;` `      ``}` `    ``}`   `    ``// If no numbers are found` `    ``if` `(flag == 0)` `      ``Console.WriteLine(-1);` `  ``}`     `  ``// Driver Code` `  ``static` `public` `void` `Main()` `  ``{`   `    ``// Given value of N & K` `    ``int` `N = 500, K = 10;`   `    ``// Function call to print all numbers` `    ``// from [1, N] with product of digits K` `    ``productOfDigitsK(N, K);` `  ``}` `}`   `// This code is contributed by jana_sayantan.`

## Javascript

 ``

Output

`25 52 125 152 215 251 `

Time Complexity: O(N * logN)
Auxiliary Space: O(1)