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 <bits/stdc++.h>using namespace std;// Function to return the smallest number// which on dividing with any element from// the range [2, N] leaves a remainder of 1long 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 codeint main(){ int N = 5; cout << getMinNum(N); return 0;} |
Java
// Java implementation of the approachclass 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 approachusing 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
<?php// PHP implementation of the approach// Function to return the smallest number// which on dividing with any element from// the range [2, N] leaves a remainder of 1function getMinNum($N){ // Find the LCM of the elements // from the range [2, N] $lcm = 1; for ($i = 2; $i <= $N; $i++) $lcm = (($i * $lcm) / (__gcd($i, $lcm))); // Return the required number return ($lcm + 1);}function __gcd($a, $b){ if ($b == 0) return $a; return __gcd($b, $a % $b);}// Driver code$N = 5;echo (getMinNum($N)); // This code has been contributed by ajit....?> |
Javascript
<script>// Javascript implementation of the approach// Function to return the smallest number// which on dividing with any element from// the range [2, N] leaves a remainder of 1function getMinNum(N){ // Find the LCM of the elements // from the range [2, N] var lcm = 1; for (var i = 2; i <= N; i++) lcm = ((i * lcm) / (__gcd(i, lcm))); // Return the required number return (lcm + 1);}function __gcd(a, b){ if (b == 0) return a; return __gcd(b, a % b);}// Driver codevar N = 5;document.write( getMinNum(N));</script> |
61
Time Complexity: O(N * log(N) )
Auxiliary Space: O(1), as no extra space has been taken.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
