Open In App

Find x, y, z that satisfy 2/n = 1/x + 1/y + 1/z

Improve
Improve
Like Article
Like
Save
Share
Report

Given n, find x, y, z such that x, y, z satisfy the equation “2/n = 1/x + 1/y + 1/z”
There are multiple x, y and z that satisfy the equation print anyone of them, if not possible then print -1.
Examples: 

Input : 3
Output : 3 4 12
Explanation: here 3 4 and 12 satisfy 
the given equation

Input : 7
Output : 7 8 56 

Note that for n = 1 there is no solution, and for n > 1 there is solution x = n, y = n+1, z = n·(n+1).
To come to this solution, represent 2/n as 1/n+1/n and reduce the problem to represent 1/n as a sum of two fractions. Let’s find the difference between 1/n and 1/(n+1) and get a fraction 1/(n*(n+1)), so the solution is

2/n = 1/n + 1/(n+1) + 1/(n*(n+1)) 

C++




// CPP program to find x y z that
// satisfies 2/n = 1/x + 1/y + 1/z...
#include <bits/stdc++.h>
using namespace std;
 
// function to find x y and z that
// satisfy given equation.
void printXYZ(int n)
{
    if (n == 1)
        cout << -1;
 
    else
        cout << "x is " << n << "\ny is "
              << n + 1 << "\nz is "
              << n * (n + 1);
}
 
// driver program to test the above function
int main()
{
    int n = 7;
    printXYZ(n);
    return 0;
}


Java




// Java program to find x y z that
// satisfies 2/n = 1/x + 1/y + 1/z...
import java.io.*;
 
class Sums {
    // function to find x y and z that
    // satisfy given equation.
    static void printXYZ(int n){
        if (n == 1)
            System.out.println(-1);
        else{
        System.out.println("x is "+ n);
        System.out.println("y is "+ (n+1));
        System.out.println("z is "+ (n * (n + 1)));
        }
    }
    // Driver program to test the above function
    public static void main (String[] args) {
        int n = 7;
        printXYZ(n);
    }
}
 
// This code is contributed by Chinmoy Lenka


Python3




# Python3 code to find x y z that
# satisfies 2/n = 1/x + 1/y + 1/z...
 
# function to find x y and z that
# satisfy given equation.
def printXYZ( n ):
    if n == 1:
        print(-1)
    else:
        print("x is " , n )
        print("y is " ,n + 1)
        print("z is " ,n * (n + 1))
 
# driver code to test the above function
n = 7
printXYZ(n)
 
# This code is contributed by "Sharad_Bhardwaj".


C#




// C# program to find x y z that
// satisfies 2/n = 1/x + 1/y + 1/z...
using System;
 
class GFG
{
    // function to find x y and z that
    // satisfy given equation.
    static void printXYZ(int n)
    {
        if (n == 1)
            Console.WriteLine(-1);
        else
        {
            Console.WriteLine("x is "+ n);
            Console.WriteLine("y is "+ (n+1));
            Console.WriteLine("z is "+ (n * (n + 1)));
        }
    }
     
    // Driver program
    public static void Main ()
    {
        int n = 7;
        printXYZ(n);
    }
}
 
// This code is contributed by vt_m


PHP




<?php
// PHP program to find x y z that
// satisfies 2/n = 1/x + 1/y + 1/z...
 
// function to find x y and z that
// satisfy given equation.
function printXYZ($n)
{
    if ($n == 1)
        echo -1;
 
    else
        echo "x is " , $n , "\ny is "
                , $n + 1 , "\nz is ",
                     $n * ($n + 1);
}
 
    // Driver Code
    $n = 7;
    printXYZ($n);
 
// This code is contributed by anuj_67.
?>


Javascript




<script>
 
// Javascript program to find x y z that
// satisfies 2/n = 1/x + 1/y + 1/z...
 
// function to find x y and z that
// satisfy given equation.
function printXYZ(n)
{
    if (n == 1)
        document.write(-1);
 
    else
        document.write("x is " + n + "<br>y is "
              + (n + 1) + "<br>z is "
              + n * (n + 1));
}
 
// driver program to test the above function
    let n = 7;
    printXYZ(n);
 
</script>


Output

x is 7
y is 8
z is 56

Time Complexity: O(1)
Auxiliary Space: O(1)

Alternate Solution 
We can write 2/n = 1/n + 1/n. And further as 2/n = 1/n + 1/2n + 1/2n.

so here x = n, y = 2*n and z = 2*n

Below is the code implementation for the alternate solution

C++




// CPP program to find x y z that satisfies 2/n = 1/x + 1/y + 1/z...
#include <bits/stdc++.h>
using namespace std;
 
// function to find x, y and z that satisfy given equation.
void printXYZ(int n)
{
    if (n == 1)
        cout << -1;
 
    else
        cout << "x is " << n << "\ny is " << 2 * n
             << "\nz is " << 2 * n;
}
 
// driver program to test the above function
int main()
{
    int n = 7;
    printXYZ(n);
    return 0;
}


Java




// Java program to find x y z that satisfies 2/n = 1/x + 1/y + 1/z...
import java.io.*;
 
class GFG {
    // function to find x, y and z that satisfy given equation.
    public static void printXYZ(int n) {
        if (n == 1)
            System.out.println("-1");
 
        else
            System.out.println( "x is " + n + "\ny is " + 2 * n +
                               "\nz is " + 2 * n);
    }
 
    // driver program to test the above function
    public static void main(String[] args) {
        int n = 7;
        printXYZ(n);
    }
}


C#




// C# program to find x y z that satisfies 2/n = 1/x + 1/y + 1/z...
using System;
using System.Linq;
using System.Collections.Generic;
 
class GFG {
 
    // function to find x, y and z that satisfy given equation.
    static void printXYZ(int n)
    {
        if (n == 1)
            Console.Write(-1);
     
        else
            Console.Write("x is " + n + "\ny is " + 2 * n
                 + "\nz is " + 2 * n);
    }
     
    // driver program to test the above function
    static public void Main()
    {
        int n = 7;
        printXYZ(n);
    }   
}
 
// This code is contributed by ratiagrawal.


Javascript




// Javascript program to find x y z that satisfies 2/n = 1/x + 1/y + 1/z...
 
// function to find x, y and z that satisfy given equation.
function printXYZ( n)
{
    if (n == 1)
        console.log(-1);
 
    else
        console.log("x is " + n + "\ny is " + 2 * n
             + "\nz is " + 2 * n);
}
 
// driver program to test the above function
let n = 7;
printXYZ(n);


Python3




# Python program to find x y z that satisfies 2/n = 1/x + 1/y + 1/z...
 
# function to find x, y and z that satisfy given equation.
def printXYZ(n):
    if n == 1:
        print("-1")
    else:
        print(f"x is {n}\ny is {2 * n}\nz is {2 * n}")
 
# driver program to test the above function
if __name__ == '__main__':
    n = 7
    printXYZ(n)
#This code is contributed by chinmaya121221


Output

x is 7
y is 14
z is 14

Time Complexity: O(1)
Auxiliary Space: O(1)



Last Updated : 23 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads