I need to determine the highest common factor for a series of integers. I have scribed an initial stab included below - does anyone have a better HCF implementation, or any improvements to suggest?
TIA Jeff #!/usr/local/bin/perl -w use strict; my ( $one, $two ) = @ARGV; $one = 37894060279 unless $one; $two = 18272779829 unless $two; # answer of defaults should be 150991 print "HCF of $one, $two is " . maxFactor( $one, $two ) . "\n"; # return highest common factor for a pair of numbers sub maxFactor { my ( $one, $two ) = @_; return $one if $one == $two; # private sub: never feed it zeros! sub _getFactors { my ($loNum, $hiNum) = @_; ## sort {$a,=>$b} @_; my $remainder = $hiNum % $loNum; my $loFactor = int( $hiNum / $loNum ); my $hiFactor = ($hiNum - $remainder ) / $loFactor; return ( $loFactor, $hiFactor, $remainder ); } my ( $loFactor, $hiFactor, $remainder ) = _getFactors( sort {$a<=>$b} ($one, $two) ); while ( $remainder ) { ( $loFactor, $hiFactor, $remainder ) = _getFactors( $remainder, $hiFactor ); } return $hiFactor; } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]