check_fact.pl


   1 #! perl
   2 
   3 use strict;
   4 use warnings;
   5 
   6 use Math::BigInt;
   7 
   8 my $rsa200 =
   9 "27997833911221327870829467638722601621070446786955428537560009929326128400107609345671052955360856061822351910951365788637105954482006576775098580557613579098734950144178863178946295187237869221823983";
  10 
  11 #  (200 digits, checksum = 213598)
  12 my $product =
  13 "27_997_833_911_221_327_870_829_467_638_722_601_621_070_446_786_955_428_537_560_009_929_32 6_128_400_107_609_345_671_052_955_360_856_061_822_351_910_951_365_788_637_105_954_482_006_ 576_775_098_580_557_613_579_098_734_950_144_178_863_178_946_295_187_237_869_221_823_983";
  14 my $x =
  15 "3_532_461_934_402_770_121_272_604_978_198_464_368_671_197_400_197_6 25_023_649_303_468_776_121_253_679_423_200_058_547_956_528_088_349";
  16 my $y =
  17 "7_925_869_954_478_333_033_347_085_841_480_059_687_737_975_857_364_2 19_960_734_330_341_455_767_872_818_152_135_381_409_304_740_185_467";
  18 
  19 $product = Math::BigInt->new($product);
  20 $x       = Math::BigInt->new($x);
  21 $y       = Math::BigInt->new($y);
  22 
  23 my $xy = $x->copy()->bmul($y);
  24 
  25 my $cmp = $product->bcmp($xy);
  26 
  27 print "Equal\n" unless $cmp;
  28 print "Equal rsa200 = product"
  29   unless Math::BigInt->new($rsa200)->bcmp($product);