![]() |
|
![]() |
#1012 |
Junior Member
Регистрация: 13.06.2010
Сообщений: 18
|
![]() |
---------
...отцвели голубые,
все цветы полевые... |
|
![]() |
![]() |
![]() |
#1013 |
Silver Member
Регистрация: 07.02.2013
Сообщений: 718
|
![]() |
![]() |
![]() |
![]() |
#1014 |
Gold Member
Регистрация: 25.06.2005
Адрес: F000:FFF0
Сообщений: 1,825
|
![]()
Удалось написать и отладить весьма быстрый алгоритм извлечения целочисленного
корня N-й степени из целого числа произвольной разрядности. В основе старый доб- рый метод Ньютона, однако его сходимость напрямую зависит от начального прибли- жения, и при неудачном выборе - миллиарды итераций, и крайне медленно сходится. Выкладываю дзен-решение, формирующее начальное приближение, за счет которого метод Ньютона сходится всего за 2-15 итераций, и, например, корень 50000 степени из 1000000-разрядного целого числа, вычисляется за 6 итераций, по времени 0,1 сек. P.S. FirstNonZeroBit - номер старшего ненулевого бита числа в двоичном представлении, по сути - очень быстрый способ вычисления целочисленного логарифма по основанию 2. Код:
restart: with(Bits): IntRoot:= proc(x,n) local a,b,q,u,v,f,it: if (n = 1) then it:= 0: return(x,it): end if: if ((x = 0) and (n > 1)) then it:= 0: return(0,it): end if: if ((x >= 1) and (n > 1)) then q:= FirstNonzeroBit(x): u:= trunc(q/n): v:= frac(q/n): f:= ceil(n*(2^v)): a:= iquo((2^u)*f,n): b:= iquo(x,a^(n-1)): if (a < b) then u:= trunc((q+1)/n): v:= frac((q+1)/n): f:= ceil(n*(2^v)): a:= iquo((2^u)*f,n): b:= iquo(x,a^(n-1)): end if: it:= 1: while (a > b) do a:= iquo((n-1)*a+b,n): b:= iquo(x,a^(n-1)): it:= it + 1: end do: return(a,it): end if: end proc: x:= 7*10^1000000: n:= 50000: IntRoot(x,n); a = 100003891896030419242, it = 6 n, q, u, f: Int64 v: Extended Последний раз редактировалось Paul Kellerman; 15.11.2014 в 20:29. |
![]() |
![]() |
![]() |
#1015 |
Gold Member
Регистрация: 04.05.2007
Адрес: Северное Реутово
Сообщений: 2,461
|
![]()
Что же, друзья. Прошел отдых в Египте, за время которого я неплохо отдохнул, подзагорел и накупался. Плюс съездил в Израиль, побывал в Палестине. Прошелся по намоленным местам. Считаю, отлично развеялся, пора и на работу завтра
![]() |
![]() |
![]() |
![]() |
#1016 |
Silver Member
Регистрация: 07.02.2013
Сообщений: 718
|
![]() |
![]() |
![]() |
![]() |
#1017 |
Junior Member
Регистрация: 13.06.2010
Сообщений: 18
|
![]()
Воду дали...я умер от счастья
|
---------
...отцвели голубые,
все цветы полевые... |
|
![]() |
![]() |
![]() |
#1018 |
Silver Member
Регистрация: 07.02.2013
Сообщений: 718
|
![]() |
![]() |
![]() |
![]() |
#1019 |
Gold Member
Регистрация: 04.05.2007
Адрес: Северное Реутово
Сообщений: 2,461
|
![]()
Dr SG, кстати, впервые тесно общался там с англичанами, на мой американизированный акцент они морщились, но альтернатив не было, терпели.
Хотя на мое "Вээ дид ю гет зет глэс" было получено презрительное "Глааас из он зе тейбл" ![]() Пробовал выводить их заоблачные трели, но мое горло видимо не может это повторить ![]() Вот вы как разговаривате? С этим "английским говором" или просто? Если как они, то как научились? |
![]() |
![]() |
![]() |
#1020 |
Platinum Member
Регистрация: 14.09.2012
Адрес: там, где ходят поезда и летают самолеты
Сообщений: 4,018
|
![]()
Все наши радости просто ничто на фоне таких вещей: когда люди радуются, что им, наконец, дали воду, электричество. Дай нам всем пореже оказываться в таких ситуациях, когда такие простые вещи вызывают радость. Я тоже очень и очень надеюсь, что больше перебоев не будет.
|
![]() |
![]() |