Нужно 487272467 возвести в степень 1352865329. KCalc думал 5 минут и вылетел, пистон уже минут 30 считает, но пока без результатно. Есть же проги с альтернативными алгоритмами?
Вот, проверь:
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;
}
Эээх
Просто я решил ВНЕЗАПНО восстановиться в универе и все же заполучить уже второй свой диплом. Еще один курсач, пара экзаменов и проект - вот я дважды и инженер... А науку успел забыть за 2 года, ибо не пригождалось на практике.
>Никакого инта тут нехватит, да и любого другого типа
Лет через 10, когда оперативки будет гига по 32 и процессоры будут раз иметь по 100 ядер, наверное, можно будет посчитать в лоб на Питоне или Хаскеле :)
Хотя... Блин, возведение в степень, вроде, не распараллелить. Так что ядра тут не особо помогут :)
хм... позднее время не сказалось на твоем ответе?), если нет, то:
>> a^2, a^4=(a^2)^2... и так далее вплоть до соответстующей степени двойки
> Побитово сдвигать 11-гигабайтное число - не очень весело :)
собственно, при чем тут побитовый сдвиг?
> Кстати, э... В криптографии обычно избегают чётных чисел (и, вообще, составных) ;)
во первых какая связь с криптографией, а во-вторых, тот же RSA основан на NP-полноте (и предположение NP != P) задачи факторизации, вероятно знаешь, что public-ключ (в простейших реализациях) - есть просто произведение двух простых чисел (private - соответственно, сами множители)