Факториал на делфи (asm)
Запись от AlexSky-coder размещена 24.05.2020 в 17:40
|
Всего комментариев 11
Комментарии
-
Запись от OwenGlendower размещена 25.05.2020 в 09:47 -
Запись от AlexSky-coder размещена 25.05.2020 в 12:46 -
Получается быстрее, чем просто из таблички вернуть результат?
Запись от politoto размещена 25.05.2020 в 14:42 -
Запись от AlexSky-coder размещена 25.05.2020 в 18:06 -
Табличку из 12-13 чисел можно заполнить во время компиляции.
Макросами или копипастом.Запись от politoto размещена 26.05.2020 в 09:03 -
Запись от Avazart размещена 26.05.2020 в 12:28 -
Вот код на Tcl, который вычисляет например факториал 200! мгновенно. А еще говорят Tcl медленный..
Результат:Ruby 1 2
proc tcl::mathfunc::fac x {expr {$x < 2? 1: $x * fac($x-1)}} expr fac(200)
78865786736479050355236321393218506229513597768717326329474253324435944996340334 29203042840119846239041772121389196388302576427902426371050619266249528299311134 62857270763317237396988943922445621451664240254033291864131227428294853277524242 40757390324032125740557956866022603190417032406235170085879617892222278962370389 7374720000000000000000000000000000000000000000000000000Запись от CoderHuligan размещена 26.05.2020 в 17:56 -
Запись от politoto размещена 26.05.2020 в 20:34 -
Цитата:Вот код на Tcl, который вычисляет например факториал 200! мгновенно..
Код:>>> import math >>> math.factorial ( 200 ) 788657867364790503552363213932185062295135977687173263294742533244359449963403342920304284011984623904177212138919638830257642790242637105061926624952829931113462857270763317237396988943922445621451664240254033291864131227428294853277524242407573903240321257405579568660226031904170324062351700858796178922222789623703897374720000000000000000000000000000000000000000000000000
Запись от politoto размещена 26.05.2020 в 20:36 -
Запись от Avazart размещена 27.05.2020 в 11:33
Обновил(-а) Avazart 27.05.2020 в 11:37 -
Оптимизировать нужно частные случаи.
Если в лоб написанную процедуру умножения применять для вычисления факториалов больших чисел, то много времени уйдет на умножение 0 на 0.
Если, например, хочется точно вычислять вероятности раскладов колоды из 52 карт, то можно сформировать таблицу разложения чисел до 52 ( или до 104 ) на простые множители и вместо умножения и деления складывать и вычитать показатели. А "цифры" вычислять, только когда взамнопростые числа приходится вычитать или складывать, а не умножить или делить.Запись от politoto размещена 27.05.2020 в 12:47