Open In App

LCM and HCF of fractions

Improve
Improve
Like Article
Like
Save
Share
Report

Given n fractions as two arrays Num and Den. The task is to find out the L.C.M of the fractions.

Examples: 

Input: num[] = {1, 7, 4}, den[] = {2, 3, 6} 
Output: LCM is = 28/1 
The given fractions are 1/2, 7/3 and 4/6. 
The LCM is 28/1

Input: num[] = {24, 48, 72, 96}, den[] = {2, 6, 8, 3} 
Output: LCM is = 288/1 
 

LCM of A/B and C/D = (LCM of A and C) / (HCF of B and D) 
 

Below is the implementation of above approach:

C++




// C++ program to find LCM of array of fractions
#include <bits/stdc++.h>
using namespace std;
 
// Function that will calculate
// the Lcm of Numerator
int LCM(int num[], int N)
{
    int ans = num[0];
    for (int i = 1; i < N; i++)
        ans = (((num[i] * ans)) / (__gcd(num[i], ans)));
    return ans;
}
 
// Function that will calculate
// the Hcf of Denominator
int HCF(int den[], int N)
{
    int ans = den[0];   
    for(int i = 1; i < N; i++)
        ans = __gcd(den[i], ans);   
    return ans;
}
 
int LCMOfFractions(int num[], int den[], int N)
{
    int Numerator = LCM(num, N);
    int Denominator = HCF(den, N);
 
    int gcd = __gcd(Numerator, Denominator);
 
    Numerator = Numerator / gcd;
    Denominator = Denominator / gcd;
 
    cout << "LCM is = " << Numerator << "/" << Denominator;
}
 
// Driver code
int main()
{
    int num[] = { 1, 7, 4 }, den[] = { 2, 3, 6 };
    int N = sizeof(num) / sizeof(num[0]);
    LCMOfFractions(num, den, N);
    return 0;
}


Java




// Java program to find LCM of array of fractions
 
class GFG{
     
// Recursive function to return gcd of a and b
    static int gcd(int a, int b)
    {
        // Everything divides 0 
        if (a == 0)
          return b;
        if (b == 0)
          return a;
        
        // base case
        if (a == b)
            return a;
        
        // a is greater
        if (a > b)
            return gcd(a-b, b);
        return gcd(a, b-a);
    }
     
// Function that will calculate
// the Lcm of Numerator
static int LCM(int num[], int N)
{
    int ans = num[0];
    for (int i = 1; i < N; i++)
        ans = (((num[i] * ans)) / (gcd(num[i], ans)));
    return ans;
}
 
// Function that will calculate
// the Hcf of Denominator
static int HCF(int den[], int N)
{
    int ans = den[0];
    for(int i = 1; i < N; i++)
        ans = gcd(den[i], ans);
    return ans;
}
 
static int LCMOfFractions(int num[], int den[], int N)
{
    int Numerator = LCM(num, N);
    int Denominator = HCF(den, N);
 
    int gcd1 = gcd(Numerator, Denominator);
 
    Numerator = Numerator / gcd1;
    Denominator = Denominator / gcd1;
 
    System.out.println("LCM is = " +Numerator+ "/" + Denominator);
    return 0;
}
 
// Driver code
public static void main(String args[])
{
    int num[] = { 1, 7, 4 }, den[] = { 2, 3, 6 };
    int N = num.length;
    LCMOfFractions(num, den, N);
}
}


Python3




# Python3 def program to find LCM of
# array of fractions
 
# Recursive function to
# return gcd of a and b
def gcd(a, b):
  
    # Everything divides 0
    if (a == 0):
        return b;
    if (b == 0):
        return a;
     
    # base case
    if (a == b):
        return a;
     
    # a is greater
    if (a > b):
        return gcd(a - b, b);
    return gcd(a, b - a);
     
# Function that will calculate
# the Lcm of Numerator
def LCM(num, N):
 
    ans = num[0];
    for i in range(1,N):
        ans = (((num[i] * ans)) / (gcd(num[i], ans)));
    return ans;
 
 
# Function that will calculate
# the Hcf of Denominator
def HCF(den, N):
 
    ans = den[0];
    for i in range(1,N):
        ans = gcd(den[i], ans);
    return ans;
 
 
def LCMOfFractions(num, den, N):
 
    Numerator = LCM(num, N);
    Denominator = HCF(den, N);
 
    gcd1 = gcd(Numerator, Denominator);
 
    Numerator = int(Numerator / gcd1);
    Denominator = int(Denominator / gcd1);
 
    print("LCM is =",Numerator,"/",Denominator);
 
# Driver code
num = [1, 7, 4 ];
den = [2, 3, 6 ];
N = len(num);
LCMOfFractions(num, den, N);
 
# This code is contributed
# by mits


C#




// C# program to find LCM of
// array of fractions
using System;
 
class GFG
{
     
// Recursive function to return
// gcd of a and b
static int gcd(int a, int b)
{
    // Everything divides 0
    if (a == 0)
        return b;
    if (b == 0)
        return a;
     
    // base case
    if (a == b)
        return a;
     
    // a is greater
    if (a > b)
        return gcd(a - b, b);
    return gcd(a, b - a);
}
 
// Function that will calculate
// the Lcm of Numerator
static int LCM(int []num, int N)
{
    int ans = num[0];
    for (int i = 1; i < N; i++)
        ans = (((num[i] * ans)) /
                (gcd(num[i], ans)));
    return ans;
}
 
// Function that will calculate
// the Hcf of Denominator
static int HCF(int []den, int N)
{
    int ans = den[0];
    for(int i = 1; i < N; i++)
        ans = gcd(den[i], ans);
    return ans;
}
 
static int LCMOfFractions(int []num,
                          int []den, int N)
{
    int Numerator = LCM(num, N);
    int Denominator = HCF(den, N);
 
    int gcd1 = gcd(Numerator, Denominator);
 
    Numerator = Numerator / gcd1;
    Denominator = Denominator / gcd1;
 
    Console.WriteLine("LCM is = " + Numerator +
                            "/" + Denominator);
    return 0;
}
 
// Driver code
static public void Main(String []args)
{
    int[] num = { 1, 7, 4 }, den = { 2, 3, 6 };
    int N = num.Length;
    LCMOfFractions(num, den, N);
}
}
 
// This code is contributed by Arnab Kundu


PHP




<?php
// PHP program to find LCM of
// array of fractions
 
// Recursive function to
// return gcd of a and b
function gcd($a, $b)
{
    // Everything divides 0
    if ($a == 0)
        return $b;
    if ($b == 0)
        return $a;
     
    // base case
    if ($a == $b)
        return $a;
     
    // a is greater
    if ($a > $b)
        return gcd($a - $b, $b);
    return gcd($a, $b - $a);
}
     
// Function that will calculate
// the Lcm of Numerator
function LCM($num, $N)
{
    $ans = $num[0];
    for ($i = 1; $i < $N; $i++)
        $ans = ((($num[$i] * $ans)) /
             (gcd($num[$i], $ans)));
    return $ans;
}
 
// Function that will calculate
// the Hcf of Denominator
function HCF($den, $N)
{
    $ans = $den[0];
    for($i = 1; $i < $N; $i++)
        $ans = gcd($den[$i], $ans);
    return $ans;
}
 
function LCMOfFractions($num, $den, $N)
{
    $Numerator = LCM($num, $N);
    $Denominator = HCF($den, $N);
 
    $gcd1 = gcd($Numerator, $Denominator);
 
    $Numerator = $Numerator / $gcd1;
    $Denominator = $Denominator / $gcd1;
 
    echo "LCM is = " . $Numerator .
                 "/" . $Denominator;
    return 0;
}
 
// Driver code
$num = array(1, 7, 4 );
$den = array(2, 3, 6 );
$N = sizeof($num);
LCMOfFractions($num, $den, $N);
 
// This code is contributed
// by Akanksha Rai


Javascript




<script>
 
// Javascript program to find LCM of
// array of fractions
var num = [ 1, 7, 4 ];
var den = [ 2, 3, 6 ];
 
// Recursive function to return
// gcd of a and b
function gcd(a, b)
{
     
    // Everything divides 0 
    if (a == 0)
        return b;
    if (b == 0)
        return a;
     
    // Base case
    if (a == b)
        return a;
     
    // a is greater
    if (a > b)
        return gcd(a - b, b);
         
    return gcd(a, b - a);
}
 
// Function that will calculate
// the Lcm of Numerator
function LCM(num, N)
{
    var ans = num[0];
    for(var i = 1; i < N; i++)
        ans = (((num[i] * ans)) /
            (gcd(num[i], ans)));
             
    return ans;
}
 
// Function that will calculate
// the Hcf of Denominator
function HCF(den, N)
{
    var ans = den[0];
    for(var i = 1; i < N; i++)
        ans = gcd(den[i], ans);
         
    return ans;
}
 
function LCMOfFractions(num, den, N)
{
    var Numerator = LCM(num, N);
    var Denominator = HCF(den, N);
 
    var gcd1 = gcd(Numerator, Denominator);
 
    Numerator = Numerator / gcd1;
    Denominator = Denominator / gcd1;
 
    document.write("LCM is = " + Numerator +
                           "/" + Denominator);
    return 0;
}
 
// Driver code
var N = num.length;
 
LCMOfFractions(num, den, N);
 
// This code is contributed by Ankita saini
    
</script>


Output: 

LCM is = 28/1

 

Time Complexity: O(N * log(min(a, b)))

Auxiliary Space: O(log(min(a, b)))

Given n fractions as two arrays Num and Den. The task is to find out the L.C.M of the fractions. 

Input: num[] = {1, 7, 4}, den[] = {2, 3, 6} 
Output: HCF is 1/6 
The given fractions are 1/2, 7/3 and 4/6. 
The HCF is 1/6

Input: num[] = {24, 48, 72, 96}, den[] = {2, 6, 8, 3} 
Output: HCF is 1/1 
 

HCF of A/B and C/D = (HCF of A and C) / (LCM of B and D) 
 

Below is the implementation of above approach: 

C++




// CPP program to find GCD of array of fractions
#include <bits/stdc++.h>
using namespace std;
 
// Function that will calculate
// the Lcm of Denominator
int LCM(int den[], int N)
{
    int ans = den[0];
    for (int i = 1; i < N; i++)
        ans = (((den[i] * ans)) / (__gcd(den[i], ans)));
    return ans;
}
 
// Function that will calculate
// the Hcf of Numerator
int HCF(int num[], int N)
{
    int ans = num[0];
    for (int i = 1; i < N; i++)
        ans = __gcd(num[i], ans);
    return ans;
}
 
int HCFOfFractions(int num[], int den[], int N)
{
    int Numerator = HCF(num, N);
    int Denominator = LCM(den, N);
 
    int result = __gcd(Numerator, Denominator);
 
    Numerator = Numerator / result;
    Denominator = Denominator / result;
 
    cout << "HCF is = " << Numerator << "/" << Denominator;
}
 
// Driver code
int main()
{
    int num[] = { 24, 48, 72, 96 }, den[] = { 2, 6, 8, 3 };
    int N = sizeof(num) / sizeof(num[0]);
    HCFOfFractions(num, den, N);
    return 0;
}


Java




// Java program to find GCD of array of fractions
 
class GFG{
 
static int __gcd(int a, int b)
{
    if (a == 0)
        return b;
    return __gcd(b % a, a);
}
// Function that will calculate
// the Lcm of Denominator
static int LCM(int den[], int N)
{
    int ans = den[0];
    for (int i = 1; i < N; i++)
        ans = (((den[i] * ans)) / (__gcd(den[i], ans)));
    return ans;
}
 
// Function that will calculate
// the Hcf of Numerator
static int HCF(int num[], int N)
{
    int ans = num[0];
    for (int i = 1; i < N; i++)
        ans = __gcd(num[i], ans);
    return ans;
}
 
static void HCFOfFractions(int num[], int den[], int N)
{
    int Numerator = HCF(num, N);
    int Denominator = LCM(den, N);
 
    int result = __gcd(Numerator, Denominator);
 
    Numerator = Numerator / result;
    Denominator = Denominator / result;
 
    System.out.println("HCF is = "+Numerator+"/"+Denominator);
}
 
// Driver code
public static void main(String[] args)
{
    int num[] = { 24, 48, 72, 96 }, den[] = { 2, 6, 8, 3 };
    int N = num.length;
    HCFOfFractions(num, den, N);
     
}
}
// This code is contributed by mits


Python3




# Python3 def program to find LCM
# of array of fractions
 
# Recursive function to
# return gcd of a and b
def gcd(a, b):
 
    # Everything divides 0
    if (a == 0):
        return b;
    if (b == 0):
        return a;
     
    # base case
    if (a == b):
        return a;
     
    # a is greater
    if (a > b):
        return gcd(a - b, b);
    return gcd(a, b - a);
     
# Function that will calculate
# the Lcm of Numerator
def LCM(den, N):
 
    ans = den[0];
    for i in range(1,N):
        ans = (((den[i] * ans)) /
                (gcd(den[i], ans)));
    return ans;
 
# Function that will calculate
# the Hcf of Denominator
def HCF(num, N):
 
    ans = num[0];
    for i in range(1, N):
        ans = gcd(num[i], ans);
    return ans;
 
def HCFOfFractions(num, den, N):
 
    Numerator = HCF(num, N);
    Denominator = LCM(den, N);
 
    gcd1 = gcd(Numerator, Denominator);
 
    Numerator = int(Numerator / gcd1);
    Denominator = int(Denominator / gcd1);
 
    print("HCF is =", Numerator,
                 "/", Denominator);
 
# Driver code
num = [24, 48, 72, 96 ];
den = [2, 6, 8, 3 ];
N = len(num);
HCFOfFractions(num, den, N);
 
# This code is contributed
# by Akanksha Rai


C#




// C# program to find GCD of array of fractions
using System;
class GFG{
 
static int __gcd(int a, int b)
{
    if (a == 0)
        return b;
    return __gcd(b % a, a);
}
// Function that will calculate
// the Lcm of Denominator
static int LCM(int[] den, int N)
{
    int ans = den[0];
    for (int i = 1; i < N; i++)
        ans = (((den[i] * ans)) / (__gcd(den[i], ans)));
    return ans;
}
 
// Function that will calculate
// the Hcf of Numerator
static int HCF(int[] num, int N)
{
    int ans = num[0];
    for (int i = 1; i < N; i++)
        ans = __gcd(num[i], ans);
    return ans;
}
 
static void HCFOfFractions(int[] num, int[] den, int N)
{
    int Numerator = HCF(num, N);
    int Denominator = LCM(den, N);
 
    int result = __gcd(Numerator, Denominator);
 
    Numerator = Numerator / result;
    Denominator = Denominator / result;
 
    Console.WriteLine("HCF is = "+Numerator+"/"+Denominator);
}
 
// Driver code
public static void Main()
{
    int[] num = { 24, 48, 72, 96 }, den = { 2, 6, 8, 3 };
    int N = num.Length;
    HCFOfFractions(num, den, N);
     
}
}
// This code is contributed by mits


PHP




<?php
// PHP program to find GCD of
// array of fractions
function __gcd($a, $b)
{
    if ($a == 0)
        return $b;
    return __gcd($b % $a, $a);
}
 
// Function that will calculate
// the Lcm of Denominator
function LCM($den, $N)
{
    $ans = $den[0];
    for ($i = 1; $i < $N; $i++)
        $ans = ((($den[$i] * $ans)) /
               (__gcd($den[$i], $ans)));
    return $ans;
}
 
// Function that will calculate
// the Hcf of Numerator
function HCF($num, $N)
{
    $ans = $num[0];
    for ($i = 1; $i < $N; $i++)
        $ans = __gcd($num[$i], $ans);
    return $ans;
}
 
function HCFOfFractions($num, $den, $N)
{
    $Numerator = HCF($num, $N);
    $Denominator = LCM($den, $N);
 
    $result = __gcd($Numerator, $Denominator);
 
    $Numerator = $Numerator / $result;
    $Denominator = $Denominator / $result;
 
    echo "HCF is = " . $Numerator .
                 "/" . $Denominator;
}
 
// Driver code
$num = array( 24, 48, 72, 96 );
$den = array( 2, 6, 8, 3 );
$N = count($num);
HCFOfFractions($num, $den, $N);
 
// This code is contributed by mits
?>


Javascript




<script>
 
// Javascript program to find GCD of array of fractions
 
const __gcd = (a, b) => {
  if(a == 0){
    return b;
  }
  return __gcd(b % a, a);
}
 
// Function that will calculate 
// the Lcm of Denominator
 
const LCM = (den, N) => { 
    let ans = den[0]; 
    for (var i = 1; i < N; i++) 
        ans = (((den[i] * ans)) / 
               (__gcd(den[i], ans))); 
    return ans; 
}
 
// Function that will calculate 
// the Hcf of Numerator 
const HCF = (num, N) => { 
    let ans = num[0]; 
    for (var i = 1; i < N; i++) 
        ans = __gcd(num[i], ans); 
    return ans; 
 
const HCFOfFractions = (num, den, N) => { 
    let Numerator = HCF(num, N); 
    let Denominator = LCM(den, N); 
   
    let result = __gcd(Numerator, Denominator); 
   
    Numerator = Numerator / result; 
    Denominator = Denominator / result; 
   
    document.write(`HCF is = ${Numerator} / ${Denominator}`); 
}
 
// Driver code 
let num = [24, 48, 72, 96 ];
let den = [2, 6, 8, 3 ]; 
let N = num.length; 
HCFOfFractions(num, den, N); 
   
// This code is contributed by _saurabh_jaiswal
 
</script>


Output: 

HCF is = 1/1

 



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