Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Factoring Method

  1. Feb 20, 2013 #1
    Hello,

    I'm currently learning all about factorization techniques for a college project. I know that most of the advanced techniques are based around a congruence of squares. As part of our research we've been asked to think up an original factoring method. It doesn't matter how slow or fast it is as long as its original, and we get bonus points for this if we can prove it's original. I have thought of a method, although I don't think it is original, but I'm not sure, so I've come on here to check.

    I'll give the method with some examples which I've been working through in excel. Tbh I've been working through many examples, and I've hit the number limit with excel which is above 10 digits or something.

    Anyway, here goes:

    Example (1): Factorize the number 77.

    Method: 77 = 8^2 + 13
    13-8 = 5, 5^2 + 4.13 = 77

    Now we have that 77 = 8^2 + 1.13 ...(1)
    and 77 = 5^2 + 4.13 ...(2)

    Now multiply (1) by 2^2, giving 308 = 16^2 + 4.13 ...(3)

    Then subtract (2) from (3) giving 231 = 16^2 - 5^2

    Then factorise 77 as gcd(77, 16-5)*gcd(77,16+5) i.e. 77 = 11 * 7

    Example (2): Factorize the number 8791.

    Unlike with 77, which worked on the first attempt, this only works at the third attempt. Each attempt multiply the number in question by 1,2,3,4,5...

    So attempts 1 and 2 didn't result in a square being generated, but attempt 3 does:

    3*8791 = 26373 = 162^2 + 129

    Now do Abs(129 - 162) = 33

    33^2 + 196.129 = 26373

    So we have that: 162^2 + 1.129 = 26373 ...(1)
    33^2 + 196.129 = 26373 ...(2)

    Now multiply 1 by 14^2 (=196) to give: 2268^2 + 196.129 = 196.26373 ...(3)
    And: 33^2 + 196.129 = 26373

    Subtracting (2) from (3) gives: 2268^2 -33^2 = 195.26373

    Thus 8791 = gcd(2268-33, 8791)*gcd(2268+33,8791) = 149 * 59

    Example (3): Factorize 8414786257.

    A square was found in excel at the 1496th attempt.

    1496*8414786257 = 3548030^2 + 3359572 = 188458^2 + 3736489.3359572

    i.e. 1496*8414786257 = 3548030^2 + 3359572 = 188458^2 + (1933^2).3359572

    Thus gcd(1933.3548030-188458, 8414786257) = 104297
    and gcd(1933.3548030+188458, 8414786257) = 80681 Q.E.D.

    I hope someone will be able to give me some feedback on this. As I say, I don't think this method can possibly be fully original, but I may get partial credit for any original element? Thanks for your help in this. :D

    I'm running into a bit of a problem with excel, because of floating point integers and the limits with representation. I'd like to test out this method on larger integers, maybe using C. I'm a bit rusty on it at the moment, so if anyone could implement it fairly quickly and let me know how the results shape up I'd be grateful. I've reached the limit with what can be done with excel. This is the largest number I've been able to factorize thus far: 30,436,307,070,163. It's only 14 digits long. I want to test this method with semiprime numbers up to 20 or 30 decimal digits at least. 30,436,307,070,163 was factorized as follows.

    At the 10,560th attempt a square was found:

    10,560*30,436,307,070,163 = 566,928,040^2 + 122,679,680 = 444,248,360^2 + (31,799^2)*122,679,680

    Thus gcd(31,799*566,928,040-444,248,360; 30,436,307,070,163) = 8,589,337.
    The other factor is gcd(31,799*566,928,040+444,248,360; 30,436,307,070,163) = 3,543,499

    From previous posts on this site, I've seen somewhere that a method must be tested for numbers greater than 2^64 to see if it is truly effective, and this falls well short of that, which is about 20 decimal digits, although this last factorization is much better than trial division, since sqrt(30,436,307,070,163) = 5,516,911 and there are about 382,000 primes below this number, hence 10,560 attempts is not bad at this stage. However I think this will be insufficient as the numbers grow larger, but I have no idea as I lack the ability to test this out on C at the moment. If anyone could quickly check this out by seeing how it performs with two 15 digit primes, spaced not too close together, I would be very grateful to them.
     
  2. jcsd
  3. Feb 21, 2013 #2
    you write:
    5^2 + 4.13 =77
    that's wrong. 5^2 + 4.13 =25+4.13 =29.13

    same thing with your equations 1 and 2. How can 77 be equal to 8^2 + 1.13 ?

    and what exactly do you mean by ... in equation 1 and 2?
     
  4. Feb 21, 2013 #3
    Its pretty obvious that the period stands for the multiplication sign. You can take that approach when you have a given that you are not working with decimals. However, I think that the op could have used the more conventional * to make it more clear.
     
  5. Feb 21, 2013 #4
    I havn't seen this method of factoring before. However, proving it original may be a problem. You may try the wolfram site to work math problems with large numbers.
     
    Last edited: Feb 21, 2013
  6. Feb 21, 2013 #5
    It seems to me that it is a modified form of Fermat factoring. A^2 - B^2 Is the next to the last step.
     
  7. Feb 21, 2013 #6

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    It's a precursor to Dixon's method.

    Python is probably a better choice; it has arbitrary precision integers built-in, and is generally easier to program in.
     
  8. Feb 21, 2013 #7
    C as well as JAVA have the BigInterger type, fairly easy to use.
     
  9. Feb 21, 2013 #8
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Factoring Method
  1. QR factorization (Replies: 1)

  2. Factoring Help (Replies: 2)

  3. Co factor (Replies: 1)

Loading...