This function would probably be extremely slow but heres one solution I think
int numerator, denomenator; // set these to something
int smallest; // holds the smaller of the two variables
int gcf; // greatest common factor
// determine which number is smallest, doesn''t matter if equal
if ( numerator >= denomenator )
{ smallest = numerator; }
else
{ smallest = denomenator; }
for ( int i = smallest; i > 0; i++ )
{
// if both numbers divide evenly, then it is divisible by i
if ( ( numerator % i == 0 ) && ( denomenator % i == 0 ))
{ gcf = i; }
}
I''m still learning C++ so if there are any more complex functions to do this I am unaware of them.
int numerator, denomenator; // set these to something
int smallest; // holds the smaller of the two variables
int gcf; // greatest common factor
// determine which number is smallest, doesn''t matter if equal
if ( numerator >= denomenator )
{ smallest = numerator; }
else
{ smallest = denomenator; }
for ( int i = smallest; i > 0; i++ )
{
// if both numbers divide evenly, then it is divisible by i
if ( ( numerator % i == 0 ) && ( denomenator % i == 0 ))
{ gcf = i; }
}
I''m still learning C++ so if there are any more complex functions to do this I am unaware of them.
Here''s some source code I made a while ago:
// Utilitiesvoid rational::simplify() // Simplify rational{ double x=gcd(num, denom); num/=x; denom/=x;}long rational::gcd(long x, long y) // Find greatest common divisor{ x=labs(x); // long absolute value y=labs(y); while(x != y) { if(x<y) y-=x; if(y<x) x-=y; } return(x);}
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement