Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
ВнизВозведение в степень Найти похожие ветки
← →
gamez (2008-04-27 00:17) [0]Как байтовою переменную возвести в степень.?
Вот нашел такую функцию.
Пишет несоответствие типов Byte and Extendedfunction step(x:byte;k:byte):byte;
begin
step:=Exp(k*ln(x));
end;
← →
DrPass © (2008-04-27 00:21) [1]
function step(x:byte;k:byte):extended;
begin
step:=Exp(k*ln(x));
end;
← →
gamez (2008-04-27 00:27) [2]Не работает..
Вот пример который мне нужно решить и компилятор указывает на переменную b
N,P,Q,D,E,C: integer;
....
b := Step(b,e) mod n;
← →
Восхищенный (2008-04-27 00:30) [3]> gamez
Это уже совсем другая ошибка.
Слушай, ты хоть один раз хоть пару страниц хоть одной книжки по Паскалю прочитал?
Здесь тебя ему обучать не станут, долго слишком.
← →
gamez (2008-04-27 00:36) [4]В паскале нет функции для возведения числа в степень.
Воспользовавшись формулой
XV = eV ln X.
выходит такая функция
function step(x:byte;k:byte):extended;
begin
step:=Exp(k*ln(x));
end;
У получается не соответствие типов.Я читаю файл по байтно в переменую b
И с переменной b нужно проделать такую операцию:
b := Step(b,e) mod n;
← →
Восхищенный (2008-04-27 00:43) [5]> gamez (27.04.08 00:36) [4]
> В паскале нет функции для возведения числа в степень.
Это знают все. А ты не знаешь типов данных. Как, по-твоему, результат 255^255 может уместиться в 1 байте? Или как можно загнать дробное в целое, не обрезая его?
Не знаешь ты типов данных. А без них - бесполезно. Прочти хоть 10 страниц.
← →
gamez (2008-04-27 00:58) [6]Вот типы :
Byte 0...255
ShortInt -128...+127
Word 0...65 535
Integer -32 768...+32 767
LongInt -2 147 483 648...+2 147 483 647
Я файл читаю побайтно, а каждый байт файла мне нужно выщитать по формуле b := Step(b,e) mod n;
Ну и как мне быть?
← →
{RASkov} © (2008-04-27 01:00) [7]> [6] gamez (27.04.08 00:58)
> Ну и как мне быть?
Думать, а не валять дурака... :(
← →
Johnmen © (2008-04-27 01:02) [8]
> Ну и как мне быть?
Удавиться?
← →
Игорь Шевченко © (2008-04-27 01:05) [9]
> Как байтовою переменную возвести в степень.?
умножить несколько раз на саму себя
← →
gamez (2008-04-27 01:12) [10]Ха ХА !!!
Может кто мне табличку умножение ещё подкинет. !!!
Игорь Шевченко © (27.04.08 01:05) [9]
Ты что думаеш, что я обкурился и не знаю как воспроизвести в степень
число .
Ты байтовый тип в степень воспроизведи !!!
← →
Германн © (2008-04-27 01:17) [11]
> gamez (27.04.08 01:12) [10]
>
> Ха ХА !!!
> Может кто мне табличку умножение ещё подкинет. !!!
>
> Игорь Шевченко © (27.04.08 01:05) [9]
>
> Ты что думаеш, что я обкурился и не знаю как воспроизвести
> в степень
> число .
> Ты байтовый тип в степень воспроизведи !!!
>
А что? И подкинем. И учебник по арифметике тоже. Похоже он тебе не помешает.
← →
Johnmen © (2008-04-27 01:17) [12]Удавись. Доставь нам радость...
← →
Германн © (2008-04-27 01:27) [13]
> и не знаю как воспроизвести в степень
> число .
Этого вообще никто не знает. Кроме тебя. :)
← →
Германн © (2008-04-27 02:01) [14]Не. Ну я, конечно, отдыхаю после напряженного (хоть и не трудового дня). Поэтому не всё сразу схватываю. Но уж если, то...
> Ты что думаеш, что я обкурился и не знаю как воспроизвести
> в степень
> число .
> Ты байтовый тип в степень воспроизведи !!!
>
Таперича я заметил другую чушь в данном сообщении.
Автор знает как возвести в степень число. (Ну, это он так думает, что знает. Но что он знает нам не ведомо). Но вот возводить в степень "тип", ещё никто, никогда не пытался. По-крайней мере находясь в здравой памяти и в здравом рассудке.
P.S. Я не столь кровожаден как Johnmen ©, но я сторонник идеи Кэтмара.
Дворников не хватает, а представителей семейства ЖЗЧ уже слишком много.
← →
korneley © (2008-04-27 06:41) [15]
> Германн © (27.04.08 02:01) [14]
> Но вот
> возводить в степень "тип", ещё никто, никогда не пытался.
Приношу извинения за офтоп, но не менее забавно.
http://www.rusf.ru/lukin/books/tipa_artikl.htm
← →
MBo © (2008-04-27 08:05) [16]http://algolist.manual.ru/maths/count_fast/fast_exp.php
← →
Anatoly Podgoretsky © (2008-04-27 11:05) [17]Без грибов тут дело не обошлось.
← →
Игорь Шевченко © (2008-04-27 11:18) [18]gamez (27.04.08 01:12) [10]
>
> Ты что думаеш, что я обкурился и не знаю как воспроизвести
> в степень
> число .
> Ты байтовый тип в степень воспроизведи !!!function BytePower (Value, Power: Byte): Byte;
var
I: Integer;
begin
if Power = 0 then
Result := 1
else
begin
Result := Value;
for I := 2 to Power do
Result := Result * Value;
end;
end;
← →
Palladin © (2008-04-27 11:55) [19]
>gamez (27.04.08 01:12) [10]
LMD
← →
icWasya © (2008-04-28 15:19) [20]>gamez (27.04.08 00:36) [4]
>.Я читаю файл по байтно в переменую b
И с переменной b нужно проделать такую операцию:
b := Step(b,e) mod n;
На прямую код из [18] брать нельзя, так как не обрабатывается переполнение.
Если быть точным, то Вам нужно делать так
const M = 191; // или сколько там
function AddM(A,B:Byte):Byte;
begin
Result:=(A+B) mod M;
end;
function MulM(A,B:Byte):Byte;
begin
Result:=(A*B) mod M;
end;
function Step (Value, Power: Byte): Byte;
var
I: Integer;
begin
if Power = 0 then
Result := 1
else
begin
Result := Value;
for I := 2 to Power do
Result := MulM(Result, Value);
end;
end;// не самый оптимальный вариант, но...
← →
Jeer © (2008-04-28 16:08) [21]Между прочим 255^255 ~ 5E613
← →
Игорь Шевченко © (2008-04-28 16:33) [22]
> Если быть точным, то Вам нужно делать так
255 в степени 1 mod 10 чему будет равно ?
← →
palva © (2008-04-28 22:30) [23]Спрашивается, зачем возводить в степень, если потом все равно надо брать по модулю 10.
Это все равно, если бы я стал перемножать десятизначные числа столбиком только для того, чтобы узнать, будет ли четным результат.
← →
han_malign © (2008-04-29 11:09) [24]
> Между прочим 255^255 ~ 5E613
- зато 255^255 mod 10 = 5 - если по MBo©(27.04.08 08:05)[16] - то без переполнений...
http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8E_%D0%BD%D0%B0%D1%82%D1%83%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%87%D0%B8%D1%81%D0%BB%D0%B0
если в лоб тоfor K do Result:= (Result * Value) mod N;
З.Ы. Для модулей > 128 нужен буфер > 8 бит, но для x86 -(Result * Value)
- расширяется до 32-бит и наmod N
получаем корректный результат без переполнения.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c