Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

greatest common factor

by MrNobo1024 (Hermit)
on Feb 07, 2001 at 10:42 UTC ( #56906=snippet: print w/replies, xml ) 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.

    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 ^_^
Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://56906]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (7)
As of 2017-10-21 23:15 GMT
Find Nodes?
    Voting Booth?
    My fridge is mostly full of:

    Results (271 votes). Check out past polls.