![]() |
![]() |
![]() |
|
|
#2 (permalink) |
|
Join Date: May 2003
Location: Waterloo, Ontario
|
Do you just not know the various algorithms for finding the greatest common divisor or can't you just implement them, yourself? They're pretty simple and shouldn't take you long to do...
|
|
|
|
|
|
#3 (permalink) |
|
Rookie
Join Date: May 2003
|
I have the technical aspects of the Euclidean, but I'm not sure how to translate the definition from a math textbook into c++ code.
I just thought there might be a pre-written c++ function out there that I could stick into a program and take advantage of. Thanks, Tom |
|
|
|
|
|
#4 (permalink) |
|
Rookie
Join Date: May 2003
|
You're right, once I took the time to sit down and think about it, I came up with this, which seems to work alright.
Thanks, Tom Code:
int gcd(int a, int b) {
int remainder;
while (remainder!=0) {
remainder = a % b;
a = b;
b = remainder;
}
return a;
}
|
|
|
|
|
|
#5 (permalink) |
|
Join Date: May 2003
Location: Waterloo, Ontario
|
Good for you! There's a small bug in your code (remainder is uninitialized) but, otherwise, it should work... You can either initialize your variables, change your while() loop into a do{}while() loop, or both...
I was about to suggest this: Code:
unsigned int GCD( unsigned int a, unsigned int b) {
 return b == 0 ? a : GCD( b, a % b);
}
|
|
|
|
|
|
#6 (permalink) |
|
Join Date: May 2003
Location: Waterloo, Ontario
|
Actually, now that I look at it, both our implementations assume that b > a, which is lame. You shouldn't have to care which order you pass your integers to a GCD function but I'm sure you can fix that, while you're there...
|
|
|
|
|
|
#7 (permalink) |
|
Wehret Den Anfängen!
Join Date: Nov 2003
Location: Ontario, Canada
|
Knife, actually they don't.
If b>a, his GCD code (and I assume yours) swaps a and b in the first iteration, and goes on from there.
__________________
Last edited by JHVH : 10-29-4004 BC at 09:00 PM. Reason: Time for a rest. |
|
|
|
![]() |
| Bookmarks |
| Tags |
| algorithm, euclidean |
| Thread Tools | |
|
|