Open In App

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

Improve
Improve
Like Article
Like
Save
Share
Report

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




<?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 1
function 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 1
function 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 code
var N = 5;
document.write( getMinNum(N));
 
</script>


Output: 

61

 

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

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



Last Updated : 31 May, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads