1+ using FastModularExponentiation ;
2+
3+ namespace FastModularExponentiationTest
4+ {
5+ public class FastModularExponentiationTest
6+ {
7+ [ Theory ]
8+ [ InlineData ( 450 , 289 , 520 , 320 ) ] // 450^289 % 520 = 320
9+ [ InlineData ( 2 , 1234 , 1117 , 1038 ) ] // 2^1234 % 1117 = 1038
10+ [ InlineData ( 2 , 638 , 1019 , 396 ) ] // 2^638 % 1019 = 396
11+ [ InlineData ( 2 , 719 , 1019 , 486 ) ] // 2^719 % 1019 = 486
12+ [ InlineData ( 486 , 638 , 1019 , 498 ) ] // 486^638 % 1019 = 498
13+ [ InlineData ( 396 , 719 , 1019 , 498 ) ] // 396^719 % 1019 = 498
14+ [ InlineData ( 20 , 1001 , 1739 , 1327 ) ] // 20^1001 % 1739 = 1327
15+ [ InlineData ( 1327 , 761 , 1739 , 20 ) ] // 1327^761 % 1739 = 20
16+ [ InlineData ( 508 , 1001 , 1739 , 1454 ) ] // 508^1001 % 1739 = 1454
17+ [ InlineData ( 357 , 761 , 1739 , 1630 ) ] // 357^761 % 1739 = 1630
18+ [ InlineData ( 1630 , 1001 , 1739 , 357 ) ] // 1630^1001 % 1739 = 357
19+ [ InlineData ( 2 , 937 , 1619 , 1454 ) ] // 2^937 % 1619 = 1454
20+ [ InlineData ( 1454 , 320 , 1619 , 1154 ) ] // 1454^320 % 1619 = 1154
21+ [ InlineData ( 2 , 195 , 1619 , 1380 ) ] // 2^195 % 1619 = 1380
22+ [ InlineData ( 1454 , 195 , 1619 , 1053 ) ] // 1454^195 % 1619 = 1053
23+ [ InlineData ( 130 , 681 , 1619 , 571 ) ] // 130^681 % 1619 = 571
24+ [ InlineData ( 2 , 515 , 1619 , 1310 ) ] // 2^515 % 1619 = 1310
25+ [ InlineData ( 2 , 357 , 1619 , 983 ) ] // 2^357 % 1619 = 983
26+ [ InlineData ( 1454 , 1310 , 1619 , 807 ) ] // 1454^1310 % 1619 = 807
27+ [ InlineData ( 1310 , 1579 , 1619 , 902 ) ] // 1310^1579 % 1619 = 902
28+ public void FastModularExponentiationTestCalculationTest ( int y , int exp , int mod , int expected )
29+ {
30+ int result = Program . ModularExponentiation ( y , exp , mod ) ;
31+ Assert . Equal ( expected , result ) ;
32+ }
33+ }
34+ }
0 commit comments