2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Вариант факторизации
Сообщение26.08.2010, 14:33 


29/07/08
536
Уважаемые софорумники, размышляя о факторизации больших чисел получил результат с которым хочу поделиться.
Пусть имеем число N, перебирая простые числа до $\sqrt{N}$ мы находим делитель N либо убеждаемся, что число N - простое. Для небольших чисел такой алгоритм проходит, но для достаточно больших чисел сам перебор становится затруднительным, очень много времени уходит на процесс. Плюс к этому добавляется время на определение самих простых чисел.
Путем нехитрых рассуждений получил рекурентную формулу, которая на определенном шаге выдает делитель указанного числа N. Во эта формула:
$a(n+1)=\frac{(\sqrt{N^2+2*N*a(n)^2} -\sqrt{N^2-2*N*a(n)^2)}}{2*a(n)}$, где $a(0)=1$.
Процесс завершается, если $a(n)>\sqrt{N}$.
В этой процедуре полностью отсутствует процесс поиска простых, к тому же
с каждым шагом растет разность $a(n+1)-a(n)$.

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 14:42 
Заслуженный участник


08/04/08
8556
Че-то неправильно, $N=65$ сразу дает стационарную последовательность $1,000118$ :roll:

-- Чт авг 26, 2010 15:45:38 --

да и вообще они так все у меня стабилизируются.

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 15:10 


29/07/08
536
У вас точность не достаточная. Очень быстро ошибки накапливаются.

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 17:20 


01/07/08
836
Киев
Sonic86 в сообщении #347413 писал(а):
Че-то неправильно, $N=65$ сразу дает стационарную последовательность $1,000118$ :roll:

-- Чт авг 26, 2010 15:45:38 --

да и вообще они так все у меня стабилизируются.


Рост очень медленный. Да и, имхо, целочисленные значения эта рекурентная формула не дает.
assasin в сообщении #347438 писал(а):
Что-то запашок у этой формулы...Теоремой Ферма попахивает...


Не-а. Возможно шутка, возможно троль.
Хорошо бы, топик-стартер нашел бы все делители числа 100! и сообщил время счета и тактовую частоту процессора.

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 18:05 
Заслуженный участник


04/05/09
4584
Побережный Александр в сообщении #347411 писал(а):
Во эта формула:
$a(n+1)=\frac{(\sqrt{N^2+2*N*a(n)^2} -\sqrt{N^2-2*N*a(n)^2)}}{2*a(n)}$, где $a(0)=1$.
Процесс завершается, если $a(n)>\sqrt{N}$.
Приведите Ваш вариант последовательности для, например, $N=4$ и $N=6$.

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 18:27 


29/07/08
536
venco в сообщении #347480 писал(а):
Побережный Александр в сообщении #347411 писал(а):
Во эта формула:
$a(n+1)=\frac{(\sqrt{N^2+2*N*a(n)^2} -\sqrt{N^2-2*N*a(n)^2)}}{2*a(n)}$, где $a(0)=1$.
Процесс завершается, если $a(n)>\sqrt{N}$.
Приведите Ваш вариант последовательности для, например, $N=4$ и $N=6$.


В этом как раз и проблема для меня показать всю последовательность для конкретного числа. Появляется много корней и я не могу упростить выражение. Есть ли возможность перевести рекурентную формулу в обычную? Как, например, ряд чисел Фиббоначи.

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 18:57 
Заслуженный участник


04/05/09
4584
Побережный Александр в сообщении #347482 писал(а):
В этом как раз и проблема для меня показать всю последовательность для конкретного числа.
Вы хотя бы численно посчитайте - там делителями и не пахнет.

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 18:57 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Побережный Александр в сообщении #347411 писал(а):
Путем нехитрых рассуждений получил рекурентную формулу, которая на определенном шаге выдает делитель указанного числа N. Во эта формула:
$a(n+1)=\frac{(\sqrt{N^2+2*N*a(n)^2} -\sqrt{N^2-2*N*a(n)^2)}}{2*a(n)}$, где $a(0)=1$.
Процесс завершается, если $a(n)>\sqrt{N}$.

Ерунда это всё, никаких простых делителей так не получается.
И прежде всего нужно заметить, что подкоренное выражение во втором корне становится отрицательным при $a>\sqrt{\frac N2}$, так что если наименьший простой делитель больше $\sqrt{\frac N2}$, то мы его и не получим.
Численный эксперимент с использованием системы компьютерной математики Mathematica 5.1 для $N=6$ дал такой результат:
Код:
1 1.014611872354576488857608608305853341919663026964091127678921391652905656360285047622432940409856917
2 1.030372918425301562651044413949148909765888509014193678337941579725468906289566818394177557910234138
3 1.047458232847430207611718991659457615152068854982857708000385867768669916428064466997535127216464072
4 1.066084526681627200595058050568228650377316364109273637199912476931968947550467929176549150828368554
5 1.086524167118275866865764708691191076769886501148660089310489566278416546970204168903467421052253003
6 1.109125608903990069614988598454603775453407942614297513603039810140277271613381142648348631103615541
7 1.134344032214090468977456296913898146986630758857830414237055806651080155685500839310718446811971756
8 1.162788938833654094554336853854949796758460534685608068721569592014944426094027887616294659470989654
9 1.195301293301719918295585580603316544784250164211353451815296007255663420650756754072226691778050341
10 1.233085195133445231021506683965654452198243760081228258932499628733447088889307833904083564571687247
11 1.277947708051978520176114185946876757085941165048564190786341216014612837458209669846993134689620912
12 1.332774038146921783394198689362228921391679793509062377700414372448707739971647836802233198539755504
13 1.402582927958756474494299515912517445192271230988591894355909491155667675961099627254843149356216581
14 1.497294731209751696939166915963434669546870688962123022936884345485546901919762332682943840709502774
15 1.641276310570229536077255639552221459501712970077830488806386658602174038683076891489720507516943737
16 1.934168863221923636633144413840958637217524755976083592099428456013760254806970565784806256798992741
17 2.325030740958322694164085729959856054399253391733806157410665405546410812914030411733820971338273574-
  -0.770864484587785996114129824353277495482288589815753968388655740824554691738961664498895117254778707 i

И где здесь хоть один простой делитель числа $N=6$?
Подчёркиваю, что вычисления выполнялись точно, а результаты распечатаны с точностью 100 значащих цифр.

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 20:15 


29/07/08
536
Спасибо за полезную информацию! Видимо ошибка в логических рассуждениях... :oops:

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 20:20 


21/07/10
555
hurtsy в сообщении #347462 писал(а):
Не-а. Возможно шутка, возможно троль.
Хорошо бы, топик-стартер нашел бы все делители числа 100! и сообщил время счета и тактовую частоту процессора.


Делители 100! выписываются на бумажке за пять минут.
Без компьютера.

Вы шутите или тролль? :)

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение26.08.2010, 20:27 


29/07/08
536
Уважаемый Someone, можно вас попросить провести аналогичные вычисления для числа 33?

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение27.08.2010, 00:17 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Вычисления-то сделать нетрудно, да писанины потом много. Ну ладно.
Сначала для $N=8$
Попытку точного вычисления мне до конца довести не удалось. Вы же сами пробовали подставлять и видели, что радикалы громоздятся на радикалы и радикалами погоняют. В результате вычисления начинают катастрофически замедляться.
Это - команда программы Mathematica. Ваше число $N$ здесь обозначено $\mathrm{NN}$, так как символ $\mathrm N$ занят для обозначения функции, вычисляющей выражение с заданной точностью. Результаты я привожу выборочно, так как их объём очень большой.
$\mathrm{NN=8;a=1;For[k=1,2a^2\leq NN,k++,a=\frac{\sqrt{NN^2+2a^2NN}-\sqrt{NN^2-2a^2NN}}{2a};Print[k,''\ '',N[a,100]]]}$
Код:
1 1.008034339861824805763454654450807736995626211602290192430180531917175817458009724666536443243067399
2 1.016404471602633948450791398129272044383930892302930148810446162722586739364848419181380540571185370
3 1.025136639013782927502687304811932712589305644528113600610257677726429985301428391785910901211145467
4 1.034260164599902179364990770339513865369104346315043137420504688011258303769191750379036104490044383
5 1.043807940799878330143322392140874957801197434373130157853529855314623848980205173904042985083100449
...
17 1.212510355704249188329673444004618289702287203159409284438719081311873933275531950622516867700240632
18 1.234301251520168460683010879569698589914295090297227590462718602272146422546975997817254047352378456
Aborted

Поэтому вместо точного вычисления нужно ограничиться приближённым с достаточной точностью. Система Mathematica контролирует ошибки округления и выводит результат с реальной точностью. Обратите внимание, что в последующих таблицах количество цифр к концу уменьшается.
$\mathrm{NN=8;a=1;For[k=1,2a^2\leq NN,k++,a=N[\frac{\sqrt{NN^2+2a^2NN}-\sqrt{NN^2-2a^2NN}}{2a},100];Print[k,''\ '',N[a,100]]]}$
Код:
1 1.008034339861824805763454654450807736995626211602290192430180531917175817458009724666536443243067399
2 1.016404471602633948450791398129272044383930892302930148810446162722586739364848419181380540571185370
3 1.025136639013782927502687304811932712589305644528113600610257677726429985301428391785910901211145467
4 1.03426016459990217936499077033951386536910434631504313742050468801125830376919175037903610449004438
5 1.04380794079987833014332239214087495780119743437313015785352985531462384898020517390404298508310045
...
17 1.21251035570424918832967344400461828970228720315940928443871908131187393327553195062251686770
1.2343012515201684606830108795696985899142950902972275904627186022721464225469759978172540474
19 1.2582383773321788764481573700244028385762853331672064087466850651245594986034650653069547286
...
28 1.74848158363359761041898390083447251273843883661240318925744772771128430377337406887724
29 1.9280176418464445445925878668199736899289970663418362127568480684228486329535986629440
30 2.3301174055882199096527870921281292621390504210763423225868168338629473952032006458966

Здесь, как видите, первоначальной точности в 100 значащих цифр с большим запасом хватило, хотя в последнем (тридцатом) числе их получилось заметно меньше (на 14).
Ничего похожего на делители числа $N=8$, как видите, нет, а количество итераций очень большое (аж 30).

Теперь для $N=33$, о котором Вы спрашивали.
$\mathrm{NN=33;a=1;For[k=1,2a^2\leq NN,k++,a=N[\frac{\sqrt{NN^2+2a^2NN}-\sqrt{NN^2-2a^2NN}}{2a},100];Print[k,''\ '',N[a,100]]]}$
Код:
1 1.000459876246952656339468152412460188536815201022157024349986281936192810416165281464863492995955181
2 1.000920812264952181211013985358355925567589790964230218684300445667462747553158183861822487276315307
3 1.001382812459004578642208870363578011686013841488098377191567112073166629887432855095998656612507057
4 1.00184588126061592245081102325518521892825919714669520787538699665824483090438283565880674809786130
5 1.00231002312800124038121513756821336124872549263335357533430708868289692108755721514977586815138555
...
204 1.125
205 1.13
206 1.13
207 1.1
208 1.1
209 1.
210 1.
211 0.
Power::infy: Infinite expression 1/0. encountered. More…
∞::indet :  Indeterminate expression 0. ComplexInfinity encountered. More…
212 Indeterminate

На 211 итерации погрешности округления "съели" все 100 цифр. Конечно, ничего не стоит заказать 1000 цифр, и всё получится. Результаты будем печатать со 100 цифрами.
$\mathrm{NN=33;a=1;For[k=1,2a^2\leq NN,k++,a=N[\frac{\sqrt{NN^2+2a^2NN}-\sqrt{NN^2-2a^2NN}}{2a},1000];Print[k,''\ '',N[a,100]]]}$
Код:
1 1.000459876246952656339468152412460188536815201022157024349986281936192810416165281464863492995955181
2 1.000920812264952181211013985358355925567589790964230218684300445667462747553158183861822487276315307
3 1.001382812459004578642208870363578011686013841488098377191567112073166629887432855095998656612507057
4 1.001845881260615922450811023255185218928259197146695207875386996658244830904382835658806748097861297
5 1.002310023128001240381215137568213361248725492633353575334307088682896921087557215149775868151385549
...
210 1.129639936436405370335281140852418044035635571939603751009099740886283947286621494720200398275789775
211 1.130486737317806030718912672777333809000681115135812266698567028840030658429416886861188711999856620
212 1.131336723562924633735405156693105980220459433000082602244979191991630954690209813687150215056444503
...
509 1.988707429008923005989891243016150076763293185495661301844663952456282548129279797591526720564626142
510 2.003361322821153960366160101799556967595669668998533642289161042844695770169144303233443843899844952
...
536 2.927089610875686609358998462169006503756818244439030037255948912143039254937284009162680404921324289
537 3.039654704317656780516439355282184367255977319336084163029919926760887392591759526120004350997085347
538 3.178997720235709111224771569484930456850338963602391945245989011185748231663296342756810050435471700
539 3.359853535746898061065303959229273006368467487050391411558330354329527458010827355428991534629312811
540 3.613233166498359470367613422735499254369490419476005131488485965056607607181747862125307069392281153
541 4.025269791651694741918573307812997942793262133017198004382795089795141645736058444271262313343996215
542 5.220704685919353626802865779819466718094067675702761422273679918554857710337791951903668440272384660

Но вместо этого можно преобразовать Вашу формулу так, чтобы потеря точности была меньше.
$\mathrm{NN=33;a=1;For[k=1,2a^2\leq NN,k++,a=N[\frac{2a*NN}{\sqrt{NN^2+2a^2NN}+\sqrt{NN^2-2a^2NN}},100];Print[k,''\ '',N[a,100]]]}$
Код:
1 1.000459876246952656339468152412460188536815201022157024349986281936192810416165281464863492995955181
2 1.000920812264952181211013985358355925567589790964230218684300445667462747553158183861822487276315307
3 1.001382812459004578642208870363578011686013841488098377191567112073166629887432855095998656612507057
4 1.001845881260615922450811023255185218928259197146695207875386996658244830904382835658806748097861297
5 1.002310023128001240381215137568213361248725492633353575334307088682896921087557215149775868151385549
...
537 3.039654704317656780516439355282184367255977319336084163029919926760887392592
538 3.178997720235709111224771569484930456850338963602391945245989011185748231663
539 3.35985353574689806106530395922927300636846748705039141155833035432952745801
540 3.61323316649835947036761342273549925436949041947600513148848596505660760718
541 4.02526979165169474191857330781299794279326213301719800438279508979514164574
542 5.2207046859193536268028657798194667180940676757027614222736799185548577103

Здесь погрешности округления "съели" 24 цифры.
Как видите, по сравнению с $N=8$ количество итераций возросло в 18 раз, и также никаких делителей не обнаружилось. А с чего Вы взяли, что таким методом можно находить делители?

Думаю, что этого достаточно. Если Вам хочется ещё поэкспериментировать, сделайте это самостоятельно.

 Профиль  
                  
 
 Обоснование формулы
Сообщение27.08.2010, 09:52 


29/07/08
536
Попробую изложить ход моих рассуждений.
Я применил геометрический подход. Число $N=1*N$. Геометрически это прямоугольник со сторонами 1 и N. Сторона N может быть диагональю нового прямоугольника с такой же площадью. Такой прямоугольник можно построить единственным образом. Новый прямоугольник будет иметь стороны $a(1)$ и $\frac{N}{a(1)}$.
В новом прямоугольнике на большей стороне строиться следующий прямоугольник со сторонами $a(2)$ и $\frac{N}{a(2)}$.
Если построить цепочку таких прямоугольников, все они будут иметь одинаковую площадь. Каждый последующий будет толще предыдущего, то есть все больше будет приближаться формой к квадрату.
К сожалению, не могу вставить картинку.
Поскольку этот процесс единственный, то я предположил, что сюда попадет и прямоугольник с целыми сторонами. Похоже, мое предположение было не обоснованным.

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение27.08.2010, 13:55 


01/07/08
836
Киев
Побережный Александр в сообщении #347622 писал(а):
Попробую изложить ход моих рассуждений.

Да, красота $-$ страшная сила. Я был неправ по поводу "шутка или троль". Прошу прощения. :oops: Имхо, у Вашего красивого итерационного процесса два "противопоказания". Ваш процесс дискретный. Второе скорость роста для больших $N$ очень маленькая. Кажется геологи, говорят - "Не все то золото - что блестит". С уважением,

 Профиль  
                  
 
 Re: Вариант факторизации
Сообщение27.08.2010, 14:23 


29/07/08
536
Спасибо на добром слове. :)
Но для меня остается открытым вопрос: будет ли содержать данная цепочка прямоугольников прямоугольник с целыми сторонами при произвольном фиксированном N. Можно ли это доказать? Если такой прямоугольник принадлежит этой цепочке, то с указанными недостатками можно попытаться побороться.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group