Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2009, 20:37   #11
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Цитата:
А столь быстрое нахождение факториалов элементарно находиться, если использовать базу данных, где уже расписаны ранее вычисленые факториалы, и при вводе пользователем числа, просто нходит ее из таблици, и вписывает как результат. Все гениальное просто =)
Это правдо, но как только табличка кончится, то все начинается с начала, и вы имеете тот же порядок функции, что и до этого: в лучшем случае логарифмический, в хужшем ...

Можно конечно "поиграть в факториалы", но проблема в том, что обычно факториалы нужны именно Большие и именно Быстро. RSA.
BaronTreep вне форума Ответить с цитированием
Старый 01.06.2009, 20:49   #12
Flex
Разленившийся я...
Пользователь
 
Аватар для Flex
 
Регистрация: 02.09.2008
Сообщений: 81
По умолчанию

Цитата:
Сообщение от BaronTreep Посмотреть сообщение
Это правдо, но как только табличка кончится, то все начинается с начала, и вы имеете тот же порядок функции, что и до этого: в лучшем случае логарифмический, в хужшем ...
Тоесть? Вот, к примеру есть программа - "калькулятор" факториалов. В ней есть таблица:

Число | Факториал
|
1 | 1
2 | 2
3 | 6

и т.д. до какого- нибудь n(max), факториал которого вычислить уже не хватило мощи компьютера, или терпения программиста.

Ну и поле для ввода целых чисел. Ввели 1, найдя в таблице в первом столбце "1" программа выводит 1, пользователь ввел n - программа по таблице нашла факториал напротив числа n. Если введенне чило больше строк в таблице (или не целое, или отрицательное), вывести некую ошибку, что ли, чтоб сменил число.
Flex вне форума Ответить с цитированием
Старый 01.06.2009, 20:52   #13
Izhic
Форумчанин
 
Аватар для Izhic
 
Регистрация: 08.10.2008
Сообщений: 668
По умолчанию

Не понял признаться, Чем Вам ХьюгоИнт не угодил?
Достаточно большие числа вычисляются.
Я перебор для простых чисел делал дак и то достаточно много больше стандартного Выдавало. Атут банальное перемножение.
Don't worry be happy
Izhic вне форума Ответить с цитированием
Старый 01.06.2009, 20:55   #14
Flex
Разленившийся я...
Пользователь
 
Аватар для Flex
 
Регистрация: 02.09.2008
Сообщений: 81
По умолчанию

Честно - банальщина)))
Хааачу все нацчится делать)) И для меня не так важен результат исчесления факториалов (на калькуляторах и т.п.), как то , что этот результат я добился в большей части сам), удовльствие от процеса, ну и практика)
Flex вне форума Ответить с цитированием
Старый 01.06.2009, 21:10   #15
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Нет... Таблица это не алгоритм а база данных. Это значит вы делеете не калькулятор (вычислитель), а программу для работы с БД. Не должно быть предела сверху, при вычисленее, какой факториал нужен, такой и должна вычислять, хоть для миллиона.
BaronTreep вне форума Ответить с цитированием
Старый 01.06.2009, 21:16   #16
Flex
Разленившийся я...
Пользователь
 
Аватар для Flex
 
Регистрация: 02.09.2008
Сообщений: 81
По умолчанию

Ну дык, если

Цитата:
Сообщение от Utkin Посмотреть сообщение
Факториал для 100 при включенном ВинАмпе на Celeron 3000 и 512 Mb вычисляется минут за 20 примерно.
то боюсь что будет с факториалом числа "хоть для миллиона."
Flex вне форума Ответить с цитированием
Старый 02.06.2009, 01:04   #17
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Maple вычислил 100.000! за 10 секунд, но боюсь что неправильно...
Mathcad просто отказывается.

А зачем вам вычислять эти самые факториалы, можно поинтересоваться?

Если нужны небольшие, то находите произведением, и сохраняйте ранее вычисленные в базе. Далее большие факториалы вычисляйте не полностью, а через ранее найденные.
По длинной арифметике сейчас припомню только практичную книжку:
Динман. "С++ примерах".
BaronTreep вне форума Ответить с цитированием
Старый 02.06.2009, 01:29   #18
Flex
Разленившийся я...
Пользователь
 
Аватар для Flex
 
Регистрация: 02.09.2008
Сообщений: 81
По умолчанию

Цитата:
Сообщение от BaronTreep Посмотреть сообщение
Maple вычислил 100.000! за 10 секунд, но боюсь что неправильно...
Тоесть неправильно..? Если программа считает по алгоритму, то не думаю что неправильно.

Цитата:
Сообщение от BaronTreep Посмотреть сообщение
А зачем вам вычислять эти самые факториалы, можно поинтересоваться?
Ну один из этапов изучения. PS пока я на Pascal е так что придераюсь к каждой мелочи)

Цитата:
Сообщение от BaronTreep Посмотреть сообщение
Если нужны небольшие, то находите произведением, и сохраняйте ранее вычисленные в базе. Далее большие факториалы вычисляйте не полностью, а через ранее найденные.
Дык в переменную более чем Integer (Longinteger) вмещает (-2147483648…2147483647) записать пока не удаеться.. Собственно и причина и название топика.

Цитата:
Сообщение от BaronTreep Посмотреть сообщение
По длинной арифметике сейчас припомню только практичную книжку:
Динман. "С++ примерах".
Спс, гляну.

PPS нашел онлайн калькулятор ( http://ru.numberempire.com/factorialcalculator.php ), который факториал считает (не более 5000), так факториал из 5000 состоит из 16320 цифр (для проверки с правильностью 100000 в maple)
Flex вне форума Ответить с цитированием
Старый 02.06.2009, 01:58   #19
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Тоже сидим ночью? Привет!

Трудно сказать правильно/неправильно, потому что факториал больших чисел имеет свойство заполняться нулями в конце. Maple выдает число в несколько страниц, представь...

Вместо Longinteger (4 Б) можно использовать две переменных Longinteger (8 Б), и записывать в них биты как в одну, или ещё больше. Но реально используют массив из целых чисел (не обязательно от 0 до 9), а дальше... Сложение в столбик, то есть на основе чисел атомов, вычитание в столбик, умножение...

Последний раз редактировалось BaronTreep; 02.06.2009 в 02:13.
BaronTreep вне форума Ответить с цитированием
Старый 02.06.2009, 02:52   #20
Flex
Разленившийся я...
Пользователь
 
Аватар для Flex
 
Регистрация: 02.09.2008
Сообщений: 81
По умолчанию

Цитата:
Сообщение от BaronTreep Посмотреть сообщение
Тоже сидим ночью? Привет!
Прив) Лето началось - снова сова))

Цитата:
Сообщение от BaronTreep Посмотреть сообщение
Трудно сказать правильно/неправильно, потому что факториал больших чисел имеет свойство заполняться нулями в конце. Maple выдает число в несколько страниц, представь...
Ну так да, ноликов в конце хватает. Представляю факториал миллиона)). Или книжку советскую (энциколпедия) - "Факториал 1 000 000 000 000 000 ", весело такую читать)

Цитата:
Сообщение от BaronTreep Посмотреть сообщение
Вместо Longinteger (4 Б) можно использовать две переменных Longinteger (8 Б), и записывать в них биты как в одну, или ещё больше. Но реально используют массив из целых чисел (не обязательно от 0 до 9), а дальше... Сложение в столбик, то есть на основе чисел атомов, вычитание в столбик, умножение...
А вот с разбиением на две и больше есть проблемы. Точнее незнание.
Flex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите отобразить тип LONG в DBMemo funball БД в Delphi 13 17.04.2009 11:46
Перевод десятичных чисел в тип Double Kuzya59 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 04.12.2008 15:41
Как прочитать 10 байтовый тип вещественных чисел The REAL Общие вопросы .NET 3 05.09.2008 10:46