 GeeksforGeeks App
Open App Browser
Continue

# Minimum integer such that it leaves a remainder 1 on dividing with any element from the range [2, N]

Given an integer N, the task is to find the minimum possible integer X such that X % M = 1 for all M from the range [2, N]
Examples:

Input: N = 5
Output: 61
61 % 2 = 1
61 % 3 = 1
61 % 4 = 1
61 % 5 = 1
Input: N = 2
Output: 3

Approach: Find the lcm of all the integers from the range [2, N] and store it in a variable lcm. Now we know that lcm is the smallest number which is divisible by all the elements from the range [2, N] and to make it leave a remainder of 1 on every division, just add 1 to it i.e. lcm + 1 is the required answer.
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the smallest number``// which on dividing with any element from``// the range [2, N] leaves a remainder of 1``long` `getMinNum(``int` `N)``{``    ``// Find the LCM of the elements``    ``// from the range [2, N]``    ``int` `lcm = 1;``    ``for` `(``int` `i = 2; i <= N; i++)``        ``lcm = ((i * lcm) / (__gcd(i, lcm)));` `    ``// Return the required number``    ``return` `(lcm + 1);``}` `// Driver code``int` `main()``{``    ``int` `N = 5;` `    ``cout << getMinNum(N);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``class` `GFG {` `    ``// Function to return the smallest number``    ``// which on dividing with any element from``    ``// the range [2, N] leaves a remainder of 1``    ``static` `long` `getMinNum(``int` `N)``    ``{``        ``// Find the LCM of the elements``        ``// from the range [2, N]``        ``int` `lcm = ``1``;``        ``for` `(``int` `i = ``2``; i <= N; i++)``            ``lcm = ((i * lcm) / (__gcd(i, lcm)));` `        ``// Return the required number``        ``return` `(lcm + ``1``);``    ``}` `    ``static` `int` `__gcd(``int` `a, ``int` `b)``    ``{``        ``if` `(b == ``0``)``            ``return` `a;``        ``return` `__gcd(b, a % b);``    ``}` `    ``// Driver code``    ``public` `static` `void` `main(String args[])``    ``{``        ``int` `N = ``5``;``        ``System.out.println(getMinNum(N));``    ``}``}` `// This code has been contributed by 29AjayKumar`

## Python3

 `# Python3 implementation of the approach``from` `math ``import` `gcd` `# Function to return the smallest number``# which on dividing with any element from``# the range [2, N] leaves a remainder of 1``def` `getMinNum(N) :` `    ``# Find the LCM of the elements``    ``# from the range [2, N]``    ``lcm ``=` `1``;``    ``for` `i ``in` `range``(``2``, N ``+` `1``) :``        ``lcm ``=` `((i ``*` `lcm) ``/``/` `(gcd(i, lcm)));` `    ``# Return the required number``    ``return` `(lcm ``+` `1``);`  `# Driver code``if` `__name__ ``=``=` `"__main__"` `:` `    ``N ``=` `5``;` `    ``print``(getMinNum(N));` `# This code is contributed by AnkitRai01`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG {` `    ``// Function to return the smallest number``    ``// which on dividing with any element from``    ``// the range [2, N] leaves a remainder of 1``    ``static` `long` `getMinNum(``int` `N)``    ``{``        ``// Find the LCM of the elements``        ``// from the range [2, N]``        ``int` `lcm = 1;``        ``for` `(``int` `i = 2; i <= N; i++)``            ``lcm = ((i * lcm) / (__gcd(i, lcm)));` `        ``// Return the required number``        ``return` `(lcm + 1);``    ``}` `    ``static` `int` `__gcd(``int` `a, ``int` `b)``    ``{``        ``if` `(b == 0)``            ``return` `a;``        ``return` `__gcd(b, a % b);``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``int` `N = 5;``        ``Console.WriteLine(getMinNum(N));``    ``}``}` `// This code has been contributed by anuj_67..`

## PHP

 ``

## Javascript

 ``

Output:

`61`

Time Complexity: O(N * log(N) )

Auxiliary Space: O(1), as no extra space has been taken.

My Personal Notes arrow_drop_up