LINUX.ORG.RU
>безрезультатно
fixed
Turbid ★★★★★
() автор топика
Лисп? У меня под рукой, к сожалению, нет..
wyldrodney
()

Куда это?

Если не секрет, а где понадобились такие вычисления, и какая программа будет переварить результат? Это же 11753385353-значное число.
Camel ★★★★★
()
Ответ на: комментарий от KRoN73
Да, чтобы было понятно - это число, записанное в десятичном виде займёт файл в 11Гб.
KRoN73 ★★★★★
()
Перл не задумываясь говорит 1302865442. Подозреваю, что врёт :)
question4 ★★★★★
()
Ответ на: комментарий от KRoN73
>Зачем тебе такое число? :)

Наверное он с RSA играется.

matich
()
/me до последнего не хотел лезть в исходники и смотреть реализацию rsa, ибо все предыдущие вычисления делал в ooocalc, придетсо лезть в чужой код.
Turbid ★★★★★
() автор топика
Ответ на: комментарий от Turbid

Практика.

А нельзя обозначить результат вычисления за Х, а потом написать стандартное: "Из этого, очевидно, следует..."?
Camel ★★★★★
()
Ответ на: комментарий от Turbid
Ты, наверное, в начале вычисляешь степень и потом считаешь модуль, так?
Иди ещё учись. Алгоритм пишется за 5 минут.

Посмотри сюда:

http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B3%D0%BE_%D0%B2%D0%BE%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D1%8C


Единственное отличие умножать нужно по модулю. Это действительно
очень просто
anatolat
()
Ответ на: комментарий от anatolat
Вот, проверь:

int power(int t, int k, int modn) {
// возведение t в степень k
  int res = 1;
  while (k) {
	if (k & 1) res = (res * t) % modn;
	t = (t * t) % modn;
	k >>= 1;
  }
  return res;
}


Эээх
anatolat
()
Ответ на: комментарий от ip1981
Кстати да, логафрифмирование позволяет заменить манипуляции с числами манипуляциями с порядками. log (a ^ b) = b * log(a)
Absurd ★★★
()
Тебе (если чо), надо возводить в степень по модулю.. :]
vasily_pupkin ★★★★★
()
Всем спасибо. :)

Просто я решил ВНЕЗАПНО восстановиться в универе и все же заполучить уже второй свой диплом. Еще один курсач, пара экзаменов и проект - вот я дважды и инженер... А науку успел забыть за 2 года, ибо не пригождалось на практике.
Turbid ★★★★★
() автор топика
собственно, это реальная задача? ^_^

поскольку для прблизительных расчетов, просто можно разбить на экспонетну и мантиссу

еще один момент: сложность вычисления (a^b) mod c намного ниже (это умеет, емнип, dc)

grimp3ur
()
Ответ на: комментарий от grimp3ur
еще пришло в голову: разбить степень в двоичном виде и подсчитать:

a^2, a^4=(a^2)^2... и так далее вплоть до соответстующей степени двойки

grimp3ur
()
Ответ на: комментарий от grimp3ur
>и так далее вплоть до соответстующей степени двойки

Побитово сдвигать 11-гигабайтное число - не очень весело :)
KRoN73 ★★★★★
()
Ответ на: комментарий от grimp3ur
Кстати, э... В криптографии обычно избегают чётных чисел (и, вообще, составных) ;)
KRoN73 ★★★★★
()
Ответ на: комментарий от Gorthauer
>Никакого инта тут нехватит, да и любого другого типа

Лет через 10, когда оперативки будет гига по 32 и процессоры будут раз иметь по 100 ядер, наверное, можно будет посчитать в лоб на Питоне или Хаскеле :)

Хотя... Блин, возведение в степень, вроде, не распараллелить. Так что ядра тут не особо помогут :)
KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73
хм... позднее время не сказалось на твоем ответе?), если нет, то:

>> a^2, a^4=(a^2)^2... и так далее вплоть до соответстующей степени двойки

> Побитово сдвигать 11-гигабайтное число - не очень весело :)

собственно, при чем тут побитовый сдвиг?

> Кстати, э... В криптографии обычно избегают чётных чисел (и, вообще, составных) ;)

во первых какая связь с криптографией, а во-вторых, тот же RSA основан на NP-полноте (и предположение NP != P) задачи факторизации, вероятно знаешь, что public-ключ (в простейших реализациях) - есть просто произведение двух простых чисел (private - соответственно, сами множители)

grimp3ur
()
Ответ на: комментарий от KRoN73
> Хотя... Блин, возведение в степень, вроде, не распараллелить. Так что ядра тут не особо помогут :)

с чего бы? a^(n-1)*a -> берем половины a^(n-1) и умножаем -> profit,

только, емнип, для эффективности такого подхода нужна shared-memory (для домашних ядер это так и есть)

ты в курсе, что ты немного флудер?)

grimp3ur
()
bc делает вид что всё ещё считает.
KblCb ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.