27 czerwca 2022

Wymuszanie postaci dzielnika

 Alert cyberbezpieczeństwa obniżony, choć niektóre moje wyniki sugerują, że istnieje nie tylko wielomianowy algorytm rozkładu, ale nawet nieco szybszy (stosowałem bisekcję do aproksymacji wartości dzielnika). 

Zdecyfowałem się na wymuszanie specjalnej postaci któregoś z dzielników rozkładanej liczby, co prowadzi do układów równań. Oszacownie rozwiązań tych równań mocno przyspiesza lokalizację dzielników. 

Kiedy stosowałem podane już parokrotnie kryteria: suma cyfr w systemie o podstawie o 1 mniejszej jest bliska tej podstawie systemu, naprzemienna suma cyfr w systemie o podstawie o 1 większej jest blika zeru (wielokrotności podstawy), uzyskałem dobre i mocne wyniki. Najwięcej kłopotu sprawiają przeniesienia między cyframi. 

Specjalna postać dzielnika zmniejsza to "narastanie przyrostów", dzięki któremu mnożenie dużych liczb uchodzi za trudne do odrócenia. 

Jednym ze sposobów jest przedstawienie wartości jako palindrom nad systemem. Jest to wielomian o współczynnikach całkowitych, którego współczynniki od początku i od końca są równe sobie. Przedtawienie liczby nad systemem binarnym moze się odbyć na wiele sposobów, im większa podstawa, tym mniej możliwości, a po przekroczeniu pewnej wartości podstawy, pojawiają się liczne i duże wartości ujemne. Cyfra jedności palindromu jest silnie związana z resztą z dzielenia przez podstawę, zaś przekształcenia tożsamosciowe "przenoszą" spore wartości między poszczególnymi cyframi. Blokuje to zwykłe przeniesienia. Iloczyn dwu palindromów jest palindromem, zaś iloczyn palindromu przez dowolną wartość też wykazuje się powtarzalnością składników.

Aby nie być gołosłownym, wymuszając postać N = p*q = [a,b,c] * [1,f] zapisaną w trzech sąsiadujących ze sobą systemach pozycyjnych, dzielnik był w miejscu, gdzie dokładnie co trzecia postać jest ekstremum lokalnym obu wspomnianych cech podzielności. Związki miedzy współczynnikami tych trzech zapisów w systemach pozycyjnych wygenerowały proste równania nieliniowe, z których można było oszacować wartości. Szacując znak f bardzo szybko zbliżyłem się do dzielników. Nie było mowy o zbieżności, o ile nie brać pod uwagę (nieznanej przed znalezieniem rozkładu) różnicy p-q.

I tak, w nieprzyzwoicie krótkim przebiegu rozłożyłem 

1 512 264 139 457 755 655 776 587 407
= 33 084 353 498 509 * 45 709 345 341 323

I widzę kolejne możliwości skracania obliczeń... Także przez układy równań...