Hey guys!
I just started out with C and thought the "Euler Project" problems would be a great way to practice.
However, I'm stuck at Problem 5 (What is the smallest number that is evenly divisible by all of the numbers from 1 to 20?). A quick google confirmed that my method was correct but I apparently made a logical error somewhere that gives me 0 as the output always. Any help will be appreciated.
Code:
long lcm(long a, long b);
long greater(long a, long b);
long lesser(long a, long b);
int main(void){
long i;
long m = 1;
for ( i = 1; i <= 20; i++ )
{
m = lcm( m, i);
}
printf("%lf\n", m);
system("PAUSE");
return 0;
}
long lcm(long a, long b)
{
long larger_num;
long smaller_num;
long answer;
long gcd;
larger_num = greater(a, b);
smaller_num = lesser(a, b);
while ( smaller_num != 0 )
{
gcd = larger_num - smaller_num;
larger_num = greater (gcd, smaller_num);
smaller_num = lesser (gcd, smaller_num);
}
answer = a * b / larger_num;
return answer;
}
long greater(long a, long b)
{
if ( a > b)
{
return a;
}
else if ( b > a)
{
return b;
}
else
{
return a;
}
}
long lesser(long a, long b)
{
if ( a < b)
{
return a;
}
else if ( b < a)
{
return b;
}
else
{
return a;
}
}