Я получаю это сообщение об ошибке:
Exception in thread "main" java.lang.ArithmeticException: BigInteger not invertible.
Это странно, потому что я проверил, является ли он обратимым, как это, но через некоторое время:
if(e.gcd(f)==BigInteger.valueOf(1)){d=e.modInverse(f);}
(я использую только modInverseоднажды, поэтому проблема может быть только в этом.) Я также попробовал использовать функцию equals для проверки того же результата и замены BigInteger.valueOf (1) на BigInteger.ONE, также тот же результат.
e иF оба довольно большие числа.Может ли это быть проблемой?Если нет, то что?
Редактировать: два числа, которые должны быть хорошими (e и f оба генерируются случайным образом): e: 9621052046061456501366587335847490032034738260531416442599992125724770869143777724434621136148270408224358486480789065076015439260049732834961669339663651068040517049948746219457579643120163445760970644691744741533662899190172821721584052976577686282851438621400884199179254302505283244747995592596611537181094200162016550417633813815524000523611778694711681246885146830340987509832366125391293211772272830763010707464147876271519220158561249284055201778976275
f:. 16676513155155711435633556290292399841994478533147079158165313450742666183857468374630705186073152798730185754009359158564262184760166850555421565829031677397531160732952407631566282672221888347405139275392725582249315145105384589417633027161798592285078352417743828277682057499510687432654973434263500652446355805121287249351524290685634309632867270787070026404872073959084720337580246072021126301925486445661096650037029829869513910200205317091132530162195304846449018937204755880662935929704531348715166585715335080615831412163500338513091079355521203276478413800219497108551811002174097217821125116752809771773184
1019 *