Rumato
Март 30, 2011 21:52:21
Здравствуйте, мне нужно возвести 75790643190143 в степень 1908298, т.е.
я думаю может быть разложить на простые множители степень и потом поочерёдно возводить. 1908298 факторизуется на , но тоже проблема
это много - не считается. Хотя можно факторизовать оба числа и потом их возводить
Есть какие-нибудь решения таких проблем? или идеи как решить?
Studentik
Март 31, 2011 10:12:16
import decimal
d1 = decimal.Decimal('75790643190143')
d2 = decimal.Decimal('1908298')
d3 = d1**d2
print(d3)
4.745492313861105442800525716E+26486442
Rumato
Апрель 1, 2011 07:52:38
спасибо большое - помогло, а я с циклами и факторизацией пытался сделать;))
Rumato
Апрель 1, 2011 19:11:18
в продолжение темы (надеюсь не сильно обнаглею) : число d3 получили,как его по модулю поделить на другое число? тоже большое, типа такого : 99595173815424, т.е d3 mod 99595173815424 или же d3%99595173815424
cookie-god
Апрель 3, 2011 14:14:13
Rumato
в продолжение темы (надеюсь не сильно обнаглею) : число d3 получили,как его по модулю поделить на другое число? тоже большое, типа такого : 99595173815424, т.е d3 mod 99595173815424 или же d3%99595173815424
http://e-maxx.ru/algo/binary_powТолько на каждой итерации там надо брать a % 99595173815424
Rumato
Апрель 3, 2011 14:32:39
cookie-god, интересная инфа, мне примерно тоже в универе на фортране показали, спасибо за помощь!)
Андрей Светлов
Апрель 3, 2011 14:39:10
Ой! стандартнейшая функция pow принимает три параметра. int/long вполне подойдет, decimal не требуется.
Это вы RSA ручками делаете?
Rumato
Апрель 3, 2011 15:16:03
Андрей Светлов, да - это RSA, нужно написать программу, которая взламывает сообщение, впринципе почти всё сделал, только на последнем этапе небольшая остановка)
Андрей Светлов
Апрель 3, 2011 15:21:24
Насколько помню, при имеющихся ключах было кода строк на десять.
Rumato
Апрель 3, 2011 15:31:17
у меня немного больше, как напишу - выложу, может полезным будет