Open In App

Represent (2 / N) as the sum of three distinct positive integers of the form (1 / m)

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Given a positive integer N, the task is to represent the fraction 2 / N as the sum of three distinct positive integers of the form 1 / m i.e. (2 / N) = (1 / x) + (1 / y) + (1 / z) and print x, y and z.
Examples: 
 

Input: N = 3 
Output: 3 4 12 
(1 / 3) + (1 / 4) + (1 / 12) = ((4 + 3 + 1) / 12) 
= (8 / 12) = (2 / 3) i.e. 2 / N
Input: N = 28 
Output: 28 29 812 
 

 

Approach: It can be easily inferred that for N = 1, there will be no solution. For N > 1, (2 / N) can be represented as (1 / N) + (1 / N) and the problem gets reduced to representing it as a sum of two fractions. Now, find the difference between (1 / N) and 1 / (N + 1) and get the fraction 1 / (N * (N + 1)). Therefore, the solution is (2 / N) = (1 / N) + (1 / (N + 1)) + (1 / (N * (N + 1))) where x = N, y = N + 1 and z = N * (N + 1).
Below is the implementation of the above approach: 
 

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the required fractions
void find_numbers(int N)
{
    // Base condition
    if (N == 1) {
        cout << -1;
    }
 
    // For N > 1
    else {
        cout << N << " " << N + 1 << " "
             << N * (N + 1);
    }
}
 
// Driver code
int main()
{
    int N = 5;
 
    find_numbers(N);
 
    return 0;
}


Java




// Java implementation of the approach
class GFG
{
 
// Function to find the required fractions
static void find_numbers(int N)
{
    // Base condition
    if (N == 1)
    {
        System.out.print(-1);
    }
 
    // For N > 1
    else
    {
        System.out.print(N + " " + (N + 1) +
                             " " + (N * (N + 1)));
    }
}
 
// Driver code
public static void main(String []args)
{
    int N = 5;
 
    find_numbers(N);
}
}
 
// This code is contributed by Rajput-Ji


Python3




# Python3 implementation of the approach
 
# Function to find the required fractions
def find_numbers(N) :
 
    # Base condition
    if (N == 1) :
        print(-1, end = "");
 
    # For N > 1
    else :
        print(N, N + 1 , N * (N + 1));
 
# Driver code
if __name__ == "__main__" :
 
    N = 5;
 
    find_numbers(N);
     
# This code is contributed by AnkitRai01


C#




// C# implementation of the approach
using System;
 
class GFG
{
 
// Function to find the required fractions
static void find_numbers(int N)
{
    // Base condition
    if (N == 1)
    {
        Console.Write(-1);
    }
 
    // For N > 1
    else
    {
        Console.Write(N + " " + (N + 1) +
                          " " + (N * (N + 1)));
    }
}
 
// Driver code
public static void Main(String []args)
{
    int N = 5;
 
    find_numbers(N);
}
}
 
// This code is contributed by PrinciRaj1992


Javascript




<script>
// javascript implementation of the approach   
// Function to find the required fractions
    function find_numbers(N)
    {
     
        // Base condition
        if (N == 1) {
            document.write(-1);
        }
 
        // For N > 1
        else {
            document.write(N + " " + (N + 1) + " " + (N * (N + 1)));
        }
    }
 
    // Driver code
        var N = 5;
        find_numbers(N);
 
// This code is contributed by gauravrajput1
</script>


Output: 

5 6 30

 

Time Complexity: O(1), since no loop is used all operations takes constant time to perform all operations

Auxiliary Space: O(1), since no extra array is used hence space taken up by the algorithm is constant



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