# Smallest number not less than N which is divisible by all digits of N

Last Updated : 02 Jun, 2021

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 = 280
Output: 280
Explanation:
280 is the smallest which is divisible by the digits 8 and 2.

Input: N = 32
Output: 36
Explanation:
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;` `}`

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

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

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

## Javascript

 ``

Output:

`280`

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

Previous
Next