Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

greatest common factor

by MrNobo1024 (Hermit)
on Feb 07, 2001 at 10:42 UTC ( [id://56906]=CUFP: print w/replies, xml ) Need Help??

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 ^_^

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: CUFP [id://56906]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2024-04-18 07:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found