Given a positive integer **N**, the task is to find the smallest integer greater than or equal to **X**, having all its digits divisible by the non-zero digits of **N**.

**Examples:**

Input:N = 280Output:280Explanation:

280 is the smallest which is divisible by the digits 8 and 2.

Input:N = 32Output:36Explanation:

36 is the smallest number which is divisible by both the digits 2 and 3.

**Approach:** The idea is to find the LCM of all the non-zero digits of **X** and then just find the next greater multiple of that LCM value which is greater than **N**.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach` `#include "bits/stdc++.h"` `using` `namespace` `std;` `// Function to calculate the LCM` `int` `LCM(` `int` `A, ` `int` `B)` `{` ` ` `return` `(A * B / __gcd(A, B));` `}` `// Function to find the smallest number` `// satisfying given constraints` `int` `findSmallestNumber(` `int` `X)` `{` ` ` `// LCM value is 1 initially` ` ` `int` `lcm = 1;` ` ` `int` `temp = X;` ` ` `// Finding the LCM of all` ` ` `// non zero digits` ` ` `while` `(temp) {` ` ` `int` `last = temp % 10;` ` ` `temp /= 10;` ` ` `if` `(!last)` ` ` `continue` `;` ` ` `// Update the value lcm` ` ` `lcm = LCM(lcm, last);` ` ` `}` ` ` `// Stores ceil value` ` ` `int` `answer = ((X + lcm - 1) / lcm)` ` ` `* lcm;` ` ` `// Print the answer` ` ` `cout << answer;` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `X = 280;` ` ` `// Function Call` ` ` `findSmallestNumber(X);` ` ` `return` `0;` `}` |

*chevron_right*

*filter_none*

## Java

`// Java program for the above approach` `class` `GFG{` ` ` `// Function to calculate the LCM` ` ` `static` `int` `LCM(` `int` `A, ` `int` `B)` ` ` `{` ` ` `return` `(A * B / __gcd(A, B));` ` ` `}` ` ` `// Function to find the smallest number` ` ` `// satisfying given constraints` ` ` `static` `void` `findSmallestNumber(` `int` `X)` ` ` `{` ` ` `// LCM value is 1 initially` ` ` `int` `lcm = ` `1` `;` ` ` `int` `temp = X;` ` ` `// Finding the LCM of all` ` ` `// non zero digits` ` ` `while` `(temp > ` `0` `) ` ` ` `{` ` ` `int` `last = temp % ` `10` `;` ` ` `temp /= ` `10` `;` ` ` `if` `(last == ` `0` `)` ` ` `continue` `;` ` ` `// Update the value lcm` ` ` `lcm = LCM(lcm, last);` ` ` `}` ` ` `// Stores ceil value` ` ` `int` `answer = ((X + lcm - ` `1` `) / lcm)` ` ` `* lcm;` ` ` `// Print the answer` ` ` `System.out.print(answer);` ` ` `}` ` ` `static` `int` `__gcd(` `int` `a, ` `int` `b) ` ` ` `{ ` ` ` `return` `b == ` `0` `? a:__gcd(b, a % b); ` ` ` `}` ` ` `// Driver Code` ` ` `public` `static` `void` `main(String[] args)` ` ` `{` ` ` `int` `X = ` `280` `;` ` ` `// Function Call` ` ` `findSmallestNumber(X);` ` ` `}` `}` `// This code is contributed by shikhasingrajput` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program for the above approach` `import` `math` `# Function to calculate the LCM` `def` `LCM(A, B):` ` ` ` ` `return` `(A ` `*` `B ` `/` `/` `math.gcd(A, B))` `# Function to find the smallest number` `# satisfying given constraints` `def` `findSmallestNumber(X):` ` ` ` ` `# LCM value is 1 initially` ` ` `lcm ` `=` `1` ` ` `temp ` `=` `X` ` ` `# Finding the LCM of all` ` ` `# non zero digits` ` ` `while` `(temp):` ` ` `last ` `=` `temp ` `%` `10` ` ` `temp ` `/` `/` `=` `10` ` ` `if` `(` `not` `last):` ` ` `continue` ` ` `# Update the value lcm` ` ` `lcm ` `=` `LCM(lcm, last)` ` ` `# Stores ceil value` ` ` `answer ` `=` `((X ` `+` `lcm ` `-` `1` `) ` `/` `/` `lcm) ` `*` `lcm` ` ` `# Print the answer` ` ` `print` `(answer)` `# Driver Code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` ` ` `X ` `=` `280` ` ` `# Function Call` ` ` `findSmallestNumber(X)` `# This code is contributed by chitranayal` |

*chevron_right*

*filter_none*

## C#

`// C# program for the above approach` `using` `System;` `class` `GFG{` ` ` `// Function to calculate the LCM` ` ` `static` `int` `LCM(` `int` `A, ` `int` `B)` ` ` `{` ` ` `return` `(A * B / __gcd(A, B));` ` ` `}` ` ` `// Function to find the smallest number` ` ` `// satisfying given constraints` ` ` `static` `void` `findSmallestNumber(` `int` `X)` ` ` `{` ` ` `// LCM value is 1 initially` ` ` `int` `lcm = 1;` ` ` `int` `temp = X;` ` ` `// Finding the LCM of all` ` ` `// non zero digits` ` ` `while` `(temp > 0) ` ` ` `{` ` ` `int` `last = temp % 10;` ` ` `temp /= 10;` ` ` `if` `(last == 0)` ` ` `continue` `;` ` ` `// Update the value lcm` ` ` `lcm = LCM(lcm, last);` ` ` `}` ` ` `// Stores ceil value` ` ` `int` `answer = ((X + lcm - 1) / lcm)` ` ` `* lcm;` ` ` `// Print the answer` ` ` `Console.Write(answer);` ` ` `}` ` ` `static` `int` `__gcd(` `int` `a, ` `int` `b) ` ` ` `{ ` ` ` `return` `b == 0 ? a:__gcd(b, a % b); ` ` ` `}` ` ` `// Driver Code` ` ` `public` `static` `void` `Main(String[] args)` ` ` `{` ` ` `int` `X = 280;` ` ` `// Function Call` ` ` `findSmallestNumber(X);` ` ` `}` `}` `// This code is contributed by shikhasingrajput` |

*chevron_right*

*filter_none*

**Output:**

280

**Time Complexity:** O(N*log_{10}N)**Auxiliary Space:** O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.