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("30670994186617554437952179655738549199440417236862070565056050156714326928959790047677392271399646386122256471513118588673376164804790573372343299501858924404525517855"); $DIVISOR=Math::BigInt->new("433818800397844202389693985336968290605469456301558930293445695571862781832679867424802"); 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 = 30670994186617554437952179655738549199440417236862070565056050156714326928959790047677392271399646386122256471513118588673376164804790573372343299501858924404525517855. # DIVISOR = 433818800397844202389693985336968290605469456301558930293445695571862781832679867424802. # Quotient = 70700011522068579658172100745645773583265413183198000446943604785174615744121367. # Remainder = 114451290157422672341488658066899631000225655648265162164785349155817398901652091573521. # Remain = [114451290157422672341488658066899631000225655648265162164785349155817398901652091573521]