Archived

This topic is now archived and is closed to further replies.

aeleneski

i

Recommended Posts

Guest Anonymous Poster   
Guest Anonymous Poster
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.

Share this post


Link to post
Share on other sites
Floppy    122
Here''s some source code I made a while ago:
  
// Utilities

void 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);
}

Share this post


Link to post
Share on other sites