in reply to Simple arithmetic?
output:use strict; use warnings; # greatest common multiple sub gcm { my ( $max, $num ) = @_; for ( my $c = 1; ( $num & 1 ) == 0 && $c < 4096; $c <<= 1 ) { $num >>= 1; } my $lcm = 4096 * $num; # least common multiple return int( $max / $lcm ) * $lcm; } sub pretty { return shift =~ s/\d \K (?= (?: \d{3} )+ \z)/_/xgr; } print pretty( gcm( 2_147_483_648, 12 ) ), "\n"; print pretty( gcm( 3_221_225_472, 5007 ) ), "\n"; print pretty( gcm( 4_096, 4_096 ) ), "\n"; print pretty( gcm( 8_192, 8_192 ) ), "\n"; print pretty( gcm( 15_000, 8_192 ) ), "\n"; print pretty( gcm( 17_000, 8_192 ) ), "\n"; print pretty( gcm( 17_000, 10 ) ), "\n";
2_147_475_456 3_219_861_504 4_096 8_192 8_192 16_384 0
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Simple arithmetic?
by BrowserUk (Patriarch) on Mar 08, 2015 at 12:27 UTC | |
by hdb (Monsignor) on Mar 08, 2015 at 12:47 UTC | |
by Anonymous Monk on Mar 08, 2015 at 13:03 UTC |