mersenneforum.org

mersenneforum.org (https://www.mersenneforum.org/index.php)
-   Factoring (https://www.mersenneforum.org/forumdisplay.php?f=19)
-   -   searching part of the space using binary search (https://www.mersenneforum.org/showthread.php?t=18617)

William Edwards 2013-09-24 05:53

searching part of the space using binary search
 
(I'm a rank hobbyist and I doubt my input is especially inspired, and I really just want to find out how useful the pattern I noticed is. Apologies aside:)

I was looking at the part of the hyperbolic curve near the middle where the curve is very nearly diagonal, and noticed a simple, exploitable pattern:

[img]http://media.tumblr.com/2ecc00039204012c408ee2c6ec5fb625/tumblr_inline_mtf93psacK1r3qp3f.png[/img]

(You'll see that I chose to plot y going downwards, like a times-table.)

Near the centre of the curve those squares go diagonally for some long run and then take one step downwards. This is because the curve is slightly greater than 45[sup]o[/sup], obviously.

And if (x+1)*(y-1) < target, then x*y must also be less than target. You are only interested in finding and evaluating where it goes down one.

So you can travel those diagonals using a binary search or by division.

Here is my blog post about this: [url]http://williamedwardscoder.tumblr.com/post/61750740761/fun-factoring-big-integers[/url]

I'm curious as to if others have already noticed this, or exploited this?

R.D. Silverman 2013-09-24 09:42

[QUOTE=William Edwards;353953](I'm a rank hobbyist and I doubt my input is especially inspired, and I really just want to find out how useful the pattern I noticed is. Apologies aside:)

I was looking at the part of the hyperbolic curve near the middle where the curve is very nearly diagonal, and noticed a simple, exploitable pattern:

[img]http://media.tumblr.com/2ecc00039204012c408ee2c6ec5fb625/tumblr_inline_mtf93psacK1r3qp3f.png[/img]

(You'll see that I chose to plot y going downwards, like a times-table.)

Near the centre of the curve those squares go diagonally for some long run and then take one step downwards. This is because the curve is slightly greater than 45[sup]o[/sup], obviously.

And if (x+1)*(y-1) < target, then x*y must also be less than target. You are only interested in finding and evaluating where it goes down one.

So you can travel those diagonals using a binary search or by division.

Here is my blog post about this: [url]http://williamedwardscoder.tumblr.com/post/61750740761/fun-factoring-big-integers[/url]

I'm curious as to if others have already noticed this, or exploited this?[/QUOTE]

Complete nonsense.

jasonp 2013-09-24 11:45

Per your blog post, you can certainly prove a number to be prime, without factoring it, but the algorithms for doing that are pretty complex. The search term is 'primality proving'.

It is much easier to think about factorization in algebraic terms, and much easier to find patterns using algebaic relationships than to try to spot colors in a table. For example, your experiments appear to be a graphical rediscovery of Fermat's factorization algorithm, which works especially well when factors are near the square root of the input. Fermat's algorithm is very easy to express algebraically (it's hundreds of years old).

The objective with factorization is always to factor something bigger, and doing it by eye will not scale. At this point you if you want to really accelerate things you should go to wikipedia and read up on integer factorization; the articles on the various methods are quite good there and you'll be amazed how quickly they work.

You also need to get into the habit of doing background reading before coding, especially if you are a professional programmer, because in 2013 it's very difficult to think of something new in the computer field and very easy to leverage the work of others.


All times are UTC. The time now is 14:03.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.