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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.