LCM and HCF of fractions
Last Updated :
11 Jul, 2022
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++
#include <bits/stdc++.h>
using namespace std;
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;
}
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;
}
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
class GFG{
static int gcd( int a, int b)
{
if (a == 0 )
return b;
if (b == 0 )
return a;
if (a == b)
return a;
if (a > b)
return gcd(a-b, b);
return gcd(a, b-a);
}
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;
}
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 ;
}
public static void main(String args[])
{
int num[] = { 1 , 7 , 4 }, den[] = { 2 , 3 , 6 };
int N = num.length;
LCMOfFractions(num, den, N);
}
}
|
Python3
def gcd(a, b):
if (a = = 0 ):
return b;
if (b = = 0 ):
return a;
if (a = = b):
return a;
if (a > b):
return gcd(a - b, b);
return gcd(a, b - a);
def LCM(num, N):
ans = num[ 0 ];
for i in range ( 1 ,N):
ans = (((num[i] * ans)) / (gcd(num[i], ans)));
return ans;
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);
num = [ 1 , 7 , 4 ];
den = [ 2 , 3 , 6 ];
N = len (num);
LCMOfFractions(num, den, N);
|
C#
using System;
class GFG
{
static int gcd( int a, int b)
{
if (a == 0)
return b;
if (b == 0)
return a;
if (a == b)
return a;
if (a > b)
return gcd(a - b, b);
return gcd(a, b - a);
}
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;
}
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;
}
static public void Main(String []args)
{
int [] num = { 1, 7, 4 }, den = { 2, 3, 6 };
int N = num.Length;
LCMOfFractions(num, den, N);
}
}
|
PHP
<?php
function gcd( $a , $b )
{
if ( $a == 0)
return $b ;
if ( $b == 0)
return $a ;
if ( $a == $b )
return $a ;
if ( $a > $b )
return gcd( $a - $b , $b );
return gcd( $a , $b - $a );
}
function LCM( $num , $N )
{
$ans = $num [0];
for ( $i = 1; $i < $N ; $i ++)
$ans = ((( $num [ $i ] * $ans )) /
(gcd( $num [ $i ], $ans )));
return $ans ;
}
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;
}
$num = array (1, 7, 4 );
$den = array (2, 3, 6 );
$N = sizeof( $num );
LCMOfFractions( $num , $den , $N );
|
Javascript
<script>
var num = [ 1, 7, 4 ];
var den = [ 2, 3, 6 ];
function gcd(a, b)
{
if (a == 0)
return b;
if (b == 0)
return a;
if (a == b)
return a;
if (a > b)
return gcd(a - b, b);
return gcd(a, b - a);
}
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 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;
}
var N = num.length;
LCMOfFractions(num, den, N);
</script>
|
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++
#include <bits/stdc++.h>
using namespace std;
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;
}
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;
}
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
class GFG{
static int __gcd( int a, int b)
{
if (a == 0 )
return b;
return __gcd(b % a, a);
}
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;
}
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);
}
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);
}
}
|
Python3
def gcd(a, b):
if (a = = 0 ):
return b;
if (b = = 0 ):
return a;
if (a = = b):
return a;
if (a > b):
return gcd(a - b, b);
return gcd(a, b - a);
def LCM(den, N):
ans = den[ 0 ];
for i in range ( 1 ,N):
ans = (((den[i] * ans)) /
(gcd(den[i], ans)));
return ans;
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);
num = [ 24 , 48 , 72 , 96 ];
den = [ 2 , 6 , 8 , 3 ];
N = len (num);
HCFOfFractions(num, den, N);
|
C#
using System;
class GFG{
static int __gcd( int a, int b)
{
if (a == 0)
return b;
return __gcd(b % a, a);
}
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;
}
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);
}
public static void Main()
{
int [] num = { 24, 48, 72, 96 }, den = { 2, 6, 8, 3 };
int N = num.Length;
HCFOfFractions(num, den, N);
}
}
|
PHP
<?php
function __gcd( $a , $b )
{
if ( $a == 0)
return $b ;
return __gcd( $b % $a , $a );
}
function LCM( $den , $N )
{
$ans = $den [0];
for ( $i = 1; $i < $N ; $i ++)
$ans = ((( $den [ $i ] * $ans )) /
(__gcd( $den [ $i ], $ans )));
return $ans ;
}
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 ;
}
$num = array ( 24, 48, 72, 96 );
$den = array ( 2, 6, 8, 3 );
$N = count ( $num );
HCFOfFractions( $num , $den , $N );
?>
|
Javascript
<script>
const __gcd = (a, b) => {
if (a == 0){
return b;
}
return __gcd(b % a, a);
}
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;
}
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}`);
}
let num = [24, 48, 72, 96 ];
let den = [2, 6, 8, 3 ];
let N = num.length;
HCFOfFractions(num, den, N);
</script>
|
Share your thoughts in the comments
Please Login to comment...