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);