There's more than one way to do things PerlMonks

### greatest common factor

by MrNobo1024 (Hermit)
 on Feb 07, 2001 at 10:42 UTC Need Help??
 Description: These functions determine the greatest common factor or least common multiple of a set of numbers. gcf() and lcm() take two numbers as arguments, and multigcf() and multilcm() will take any amount. EDIT: fixed a bug in multigcf().
```sub gcf {
my (\$x, \$y) = @_;
(\$x, \$y) = (\$y, \$x % \$y) while \$y;
return \$x;
}

sub lcm {
return(\$_[0] * \$_[1] / gcf(\$_[0], \$_[1]));
}

sub multigcf {
my \$x = shift;
\$x = gcf(\$x, shift) while @_;
return \$x;
}

sub multilcm {
my \$x = shift;
\$x = lcm(\$x, shift) while @_;
return \$x;
}
```
Replies are listed 'Best First'.
Re: greatest common factor
by zeno (Friar) on Feb 07, 2001 at 16:16 UTC

Very elegantly done. BTW, there's a typo in the sub multigcf: gcd should be gcf! Otherwise, a very nice offering.
-zeno

```sub multigcf {
my \$x = shift;
\$x = gcd(\$x, shift) while @_; #should be gcf!
return \$x;
}
its greatest common divisor , hence gcd
Re: greatest common factor
by TheAmigo (Initiate) on Apr 16, 2015 at 19:51 UTC
I found this function and it seemed reasonable, but some of my users reported that I was somtimes returning the wrong sign. Turns out that the function above has inconsistent behavior on negative numbers:

```gcf(-5, 5) = 5
gcf(5, -5) = -5

when they should really both be 5.

14 years late, but here's a fix. I changed my code so that gcf() ends with

return abs \$x;

Re: greatest common factor
by Anonymous Monk on Jun 12, 2014 at 08:03 UTC

the copy/paste i needed

many thanks ^_^

Create A New User
Node Status?
node history
Node Type: snippet [id://56906]
help
Chatterbox?
 [karlgoethebier]: no typo [marioroy]: At the Fransiscan monastery, got stuck up high in a tree from pruning and the chainsaw with large branch fell and broke the latter, but not me fortunately. Was stuck there for a while until a firetruck came by. [Corion]: marioroy: So you live dangerously ... [Lady_Aleena]: s/latter/ladder/; # ? marioroy [karlgoethebier]: marioroy: Praise the Lord [marioroy]: Well, that's why there must be angels around, invisible or not. [marioroy]: Lady_Aleena yes, ladder. [marioroy]: Corion, no not intentionally. not at all. [Lady_Aleena]: /ne tries to decide whther or not to take a hammer to hubby's alarm clock. [Lady_Aleena]: He never hears it.

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (11)
As of 2017-05-29 08:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My favorite model of computation is ...

Results (192 votes). Check out past polls.