![]() |
|
|
|
#1012 |
|
Junior Member
Регистрация: 13.06.2010
Сообщений: 18
|
|
|
---------
...отцвели голубые,
все цветы полевые... |
|
|
|
|
|
|
#1013 |
|
Silver Member
Регистрация: 07.02.2013
Сообщений: 718
|
|
|
|
|
|
|
#1014 |
|
Gold Member
Регистрация: 25.06.2005
Адрес: F000:FFF0
Сообщений: 1,830
|
Удалось написать и отладить весьма быстрый алгоритм извлечения целочисленного
корня 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,476
|
Что же, друзья. Прошел отдых в Египте, за время которого я неплохо отдохнул, подзагорел и накупался. Плюс съездил в Израиль, побывал в Палестине. Прошелся по намоленным местам. Считаю, отлично развеялся, пора и на работу завтра
|
|
|
|
|
|
#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,476
|
Dr SG, кстати, впервые тесно общался там с англичанами, на мой американизированный акцент они морщились, но альтернатив не было, терпели.
Хотя на мое "Вээ дид ю гет зет глэс" было получено презрительное "Глааас из он зе тейбл" ![]() Пробовал выводить их заоблачные трели, но мое горло видимо не может это повторить Пою мимо нот все время, никак не попаду. Вот вы как разговаривате? С этим "английским говором" или просто? Если как они, то как научились? |
|
|
|
|
|
#1020 |
|
Platinum Member
Регистрация: 14.09.2012
Адрес: там, где ходят поезда и летают самолеты
Сообщений: 4,018
|
Все наши радости просто ничто на фоне таких вещей: когда люди радуются, что им, наконец, дали воду, электричество. Дай нам всем пореже оказываться в таких ситуациях, когда такие простые вещи вызывают радость. Я тоже очень и очень надеюсь, что больше перебоев не будет.
|
|
|
|