Показать сообщение отдельно
  #6 (permalink)  
Старый 09.11.2019, 18:28
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,304

Сообщение от Hokage777
как решать подобную проблему помимо использования BigInt, который не дает делить по модулю из-за разницы типов ?
Всё таки даёт...
function powToMod(base, power, module) {
	if(power === 1n) return base;
	if(power % 2n === 0n) return powToMod(base, power / 2n, module) ** 2n % module;
	return powToMod(base, power - 1n, module) * base % module;
}

alert(powToMod(366142356n, 1447804911n, 219020071n));


Alexandroppolus, проверьте свой алгоритм, powToMod(366142356n, 1447804911n, 219020071n) должно выдавать 38504623

Проверял также тут — https://www.wolframalpha.com/input/?...11mod219020071
Ответить с цитированием