i

Started by
1 comment, last by aeleneski 22 years, 4 months ago
i [Edited by - aeleneski on April 24, 2006 11:23:05 PM]
Advertisement
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.
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