7
Wisecrack
12d

After a lot of work, the new factorization algorithm has a search space thats the factorial of (log(log(n))**2) from what it looks like.

But thats outerloop type stuff. Subgraph search (inner loop) doesn't appear to need to do any factor testing above about 97, so its all trivial factors for sequence analysis, but I haven't explored the parameter space for improvements.

It converts finding the factors of a semiprime into a sequence search on a modulus related to
OIS sequence A143975 a(n) = floor(n*(n+3)/3)
and returns a number m such that n=pq, m%p == 0||(p*i), but m%q != 0||(q*k)
where i and k are respective multiples of p and q.

This is similar in principal to earlier work where I discovered that if i = p/2, where n=p*q then

r = (abs(((((n)-(9**i)-9)+1))-((((9**i)-(n)-9)-2)))-n+1+1)

yielding a new number r that shared p as a factor with n, but is coprime with n for q, meaning you now had a third number that you could use, sharing only one non-trivial factor with n, that you could use to triangulate or suss out the factors of n.

The problem with that variation on modular exponentiation, as @hitko discovered,
was that if q was greater than about 3^p, the abs in the formula messes the whole thing up. He wrote an improvement but I didn't undertsand his code enough to use it at the time. The other thing was that you had to know p/2 beforehand to find r and I never did find a way to get at r without p/2

This doesn't have that problem, though I won't play stupid and pretend not to know that a search space of (log(log(n))**2)! isn't an enormous improvement over state of the art,
unless I'm misunderstanding.

I haven't posted the full details here, or sequence generation code, but when I'm more confident in what my eyes are seeing, and I've tested thoroughly to understand what I'm looking at, I'll post some code.

hitko's post I mentioned earlier is in this thread here:
https://devrant.com/rants/5632235/...

Comments
  • 2
    Full disclaimer, I am stupid.

    No mathematic research is useless. It just takes an idiot running at the problem from the opposite direction for the use to be found.

    Like say, multiplication or division without using mul or div instructions. It makes no sense yet we do it all the time. Why? Science. And wasting less cycles, obviously.

    It's just really hard to think about it when there's a compiler in the way, because the code doesn't reflect the actual work the computer is doing. And any cleverness from your part might just confuse the translator, who'll spit low-level garbage and falsely accuse your code of being slower, that filthy moron.

    I don't mean to say that you should absolutely start an arcane cabal centered around talking to the haunted motorola 68K inside your SEGA Genesis -- those were the days -- but perhaps you may like to try something in that vein. It's much easier to think about numerical sequences when you can see how the program itself is one.
  • 1
    @Liebranca thats what I love about OIS. Its a shit ton of sequences and formula that have no (or few) immediate applications for 99.9% of the database. But if you're just exploring problems, and your formulas output numbers with no apparent sequence or obvious method to derive, you go plug those numbers into OIS anyway, and sometimes out pops an obscure algorithm or sweet little line related to some completely different problem.

    It's how I came up with the estimates of the tenth dedekind that I posted a while back, and its come in handy elsewhere as well, such as in this instance.
Add Comment