use strict; use warnings; # use Math::BigRat lib => 'GMP'; # ':constant' use Math::BigInt lib => 'GMP'; # ':constant' use Math::BigFloat lib => 'GMP'; # ':constant' my $DIVIDEND=Math::BigInt->new("0"); my $DIVISOR=Math::BigInt->new("0"); my $Quotient=Math::BigInt->new("0"); my $Remainder=Math::BigInt->new("0"); my $Remain=Math::BigFloat->new("0"); my $OUTPUT_TOGGLE=1; $SIG{'INT'} = sub { $OUTPUT_TOGGLE=1-$OUTPUT_TOGGLE; }; while(1) { $DIVIDEND=Math::BigInt->new("3067099418661755443795217965573854919 +944041723686207056505605015671432692895979004767739227139964638612225 +6471513118588673376164804790573372343299501858924404525517855"); $DIVISOR=Math::BigInt->new("43381880039784420238969398533696829060 +5469456301558930293445695571862781832679867424802"); print "\n\nDIVIDEND = ".$DIVIDEND.".\n" if $OUTPUT_TOGGLE; print "DIVISOR = ".$DIVISOR.".\n" if $OUTPUT_TOGGLE; ($Quotient,$Remainder)=$DIVIDEND->bdiv($DIVISOR); print "Quotient = ".$Quotient.".\n" if $OUTPUT_TOGGLE; print "Remainder = ".$Remainder.".\n" if $OUTPUT_TOGGLE; $Remain=Math::BigFloat->new("$Remainder"); $Remain=$Remain->Math::BigFloat::bdiv("$DIVISOR"); print "Remain = [".$Remain."]\n" if $OUTPUT_TOGGLE; } # DIVIDEND = 306709941866175544379521796557385491994404172368620705650 +560501567143269289597900476773922713996463861222564715131185886733761 +64804790573372343299501858924404525517855. # DIVISOR = 4338188003978442023896939853369682906054694563015589302934 +45695571862781832679867424802. # Quotient = 707000115220685796581721007456457735832654131831980004469 +43604785174615744121367. # Remainder = 11445129015742267234148865806689963100022565564826516216 +4785349155817398901652091573521. # Remain = [1144512901574226723414886580668996310002256556482651621647 +85349155817398901652091573521]
[download]