Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Algorithms
  4. Factoring algorithm

Factoring algorithm

Scheduled Pinned Locked Moved Algorithms
algorithms
6 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Member 4194593
    wrote on last edited by
    #1

    Does anyone have any comment on my factoring algo below: A new method to factor large semi primes. The plan is to factor large semi prime numbers. Start by picking 2 Prime Numbers of appropriate digit size. Choose one as a 200 digit Prime Number, and the other as a 300 digit Prime Number, where their product would be a 500 digit prime number. Then convert the two decimal digit prime numbers to binary values, and multiply them to form the binary semi prime product. Calculate the bit size of the binary product. Save a copy of this semi prime into another value whose bit size is the size of the semi prime rounded up to a DWORD (mod 32 bit) bound, but left shift it until it fills the largest DWORD. Then save another copy of this left shifted semi prime, but this time right shifted by 1 bit. These copies of the semi prime will be used to compare the products of the highest test DWORDS calculated in the algorithm below (see below for the explanation of why two copies are used). The semi prime product would then be factored using a new algorithm. It has been suggested (by S. C. Coutinho in "The Mathemetics of Cipher", Chapter 11) that to select the prime numbers for a key of a digit size of r, select one between a digit size of ((4 / 10) * r) and ((45 / 100) * r). The starting point for the factoring will be chosen as the middle value between these limits, and will step alternately higher and lower until the factors are discovered. The first starting factor will then be the p (the smaller number), and the other starting factor will be q (the larger number) which will be set to ((10^r ) / p). With an r of 500, the lowest limit (in digits) will be: p = ((4 / 10) * r) p = ((4 / 10) * 500) p = (4 * 50) p = 200 digits The upper limit will be: p = ((45 / 100) * r) p = ((45 / 100) * 500) p = (45 * 5) p = 225 digits The mid-point will be: P = ((200 + 225) / 2) p = 212 digits Thus the starting p is a 212 digit number. The other starting factor will be: q = ((10^r) / p) q = ((10^500) / (10^212)) q = 288 digits The p value is then the calculated digit size (converted to bits and then DWORDS), but the q value must be calculated by subtracting the selected p value bit size from the selected semi prime bit size (and then rounded up to DWORDS). These bit sizes define bit fields that will be filled in from both ends with actual values during the factoring process. The bit size,

    B P 2 Replies Last reply
    0
    • M Member 4194593

      Does anyone have any comment on my factoring algo below: A new method to factor large semi primes. The plan is to factor large semi prime numbers. Start by picking 2 Prime Numbers of appropriate digit size. Choose one as a 200 digit Prime Number, and the other as a 300 digit Prime Number, where their product would be a 500 digit prime number. Then convert the two decimal digit prime numbers to binary values, and multiply them to form the binary semi prime product. Calculate the bit size of the binary product. Save a copy of this semi prime into another value whose bit size is the size of the semi prime rounded up to a DWORD (mod 32 bit) bound, but left shift it until it fills the largest DWORD. Then save another copy of this left shifted semi prime, but this time right shifted by 1 bit. These copies of the semi prime will be used to compare the products of the highest test DWORDS calculated in the algorithm below (see below for the explanation of why two copies are used). The semi prime product would then be factored using a new algorithm. It has been suggested (by S. C. Coutinho in "The Mathemetics of Cipher", Chapter 11) that to select the prime numbers for a key of a digit size of r, select one between a digit size of ((4 / 10) * r) and ((45 / 100) * r). The starting point for the factoring will be chosen as the middle value between these limits, and will step alternately higher and lower until the factors are discovered. The first starting factor will then be the p (the smaller number), and the other starting factor will be q (the larger number) which will be set to ((10^r ) / p). With an r of 500, the lowest limit (in digits) will be: p = ((4 / 10) * r) p = ((4 / 10) * 500) p = (4 * 50) p = 200 digits The upper limit will be: p = ((45 / 100) * r) p = ((45 / 100) * 500) p = (45 * 5) p = 225 digits The mid-point will be: P = ((200 + 225) / 2) p = 212 digits Thus the starting p is a 212 digit number. The other starting factor will be: q = ((10^r) / p) q = ((10^500) / (10^212)) q = 288 digits The p value is then the calculated digit size (converted to bits and then DWORDS), but the q value must be calculated by subtracting the selected p value bit size from the selected semi prime bit size (and then rounded up to DWORDS). These bit sizes define bit fields that will be filled in from both ends with actual values during the factoring process. The bit size,

      B Offline
      B Offline
      Bernhard Hiller
      wrote on last edited by
      #2

      That's bigger than the common homework questions here. Is it for your thesis?

      M Kornfeld Eliyahu PeterK 2 Replies Last reply
      0
      • B Bernhard Hiller

        That's bigger than the common homework questions here. Is it for your thesis?

        M Offline
        M Offline
        Member 4194593
        wrote on last edited by
        #3

        Bernhard, No this is not for any homework assignment. It is just an attempt to find another algorithm for factoring numbers - primarily to factor a semi prime. I know that this will be Big Data, but before I start implementing, is there any problem within the algorithm itself? Dave.

        1 Reply Last reply
        0
        • B Bernhard Hiller

          That's bigger than the common homework questions here. Is it for your thesis?

          Kornfeld Eliyahu PeterK Offline
          Kornfeld Eliyahu PeterK Offline
          Kornfeld Eliyahu Peter
          wrote on last edited by
          #4

          Maybe not thesis but can be a good resource - http://www.codeproject.com/Insider.aspx/undefined/?fid=1658735&tid=4791393[^]

          I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)

          "It never ceases to amaze me that a spacecraft launched in 1977 can be fixed remotely from Earth." ― Brian Cox

          1 Reply Last reply
          0
          • M Member 4194593

            Does anyone have any comment on my factoring algo below: A new method to factor large semi primes. The plan is to factor large semi prime numbers. Start by picking 2 Prime Numbers of appropriate digit size. Choose one as a 200 digit Prime Number, and the other as a 300 digit Prime Number, where their product would be a 500 digit prime number. Then convert the two decimal digit prime numbers to binary values, and multiply them to form the binary semi prime product. Calculate the bit size of the binary product. Save a copy of this semi prime into another value whose bit size is the size of the semi prime rounded up to a DWORD (mod 32 bit) bound, but left shift it until it fills the largest DWORD. Then save another copy of this left shifted semi prime, but this time right shifted by 1 bit. These copies of the semi prime will be used to compare the products of the highest test DWORDS calculated in the algorithm below (see below for the explanation of why two copies are used). The semi prime product would then be factored using a new algorithm. It has been suggested (by S. C. Coutinho in "The Mathemetics of Cipher", Chapter 11) that to select the prime numbers for a key of a digit size of r, select one between a digit size of ((4 / 10) * r) and ((45 / 100) * r). The starting point for the factoring will be chosen as the middle value between these limits, and will step alternately higher and lower until the factors are discovered. The first starting factor will then be the p (the smaller number), and the other starting factor will be q (the larger number) which will be set to ((10^r ) / p). With an r of 500, the lowest limit (in digits) will be: p = ((4 / 10) * r) p = ((4 / 10) * 500) p = (4 * 50) p = 200 digits The upper limit will be: p = ((45 / 100) * r) p = ((45 / 100) * 500) p = (45 * 5) p = 225 digits The mid-point will be: P = ((200 + 225) / 2) p = 212 digits Thus the starting p is a 212 digit number. The other starting factor will be: q = ((10^r) / p) q = ((10^500) / (10^212)) q = 288 digits The p value is then the calculated digit size (converted to bits and then DWORDS), but the q value must be calculated by subtracting the selected p value bit size from the selected semi prime bit size (and then rounded up to DWORDS). These bit sizes define bit fields that will be filled in from both ends with actual values during the factoring process. The bit size,

            P Offline
            P Offline
            Peter_in_2780
            wrote on last edited by
            #5

            Member 4194593 wrote:

            The third table is just a list of the prime numbers to be considered (all prime numbers
            less than 300 decimal digits), but saved in a special way as a multi-level directory
            structure as described below.

            A quick consultation with the revered Dr Riemann indicates that there are over 10^297 primes less than 10^300. Since there are somewhere on the order of 10^80 atoms in the known universe, your compression scheme must achieve a minimum compression ratio in excess of 10^217 : 1. Can't see that happening in a hurry... Sometimes "big data" is just too big. Cheers, Peter

            Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012

            M 1 Reply Last reply
            0
            • P Peter_in_2780

              Member 4194593 wrote:

              The third table is just a list of the prime numbers to be considered (all prime numbers
              less than 300 decimal digits), but saved in a special way as a multi-level directory
              structure as described below.

              A quick consultation with the revered Dr Riemann indicates that there are over 10^297 primes less than 10^300. Since there are somewhere on the order of 10^80 atoms in the known universe, your compression scheme must achieve a minimum compression ratio in excess of 10^217 : 1. Can't see that happening in a hurry... Sometimes "big data" is just too big. Cheers, Peter

              Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012

              M Offline
              M Offline
              Member 4194593
              wrote on last edited by
              #6

              Peter, I was waiting for someone to figure that out. Check with Ravi, I proposed this to him in Email in March. The following is the second half of the original Email to him. Too bad this would not work, I think that the actual algo would work except for the fact that the file requirements are insane:

              ------------------------------------------------------------------------------------------

              The following discussion is why this algorithm (the part above this point) should be
              published in Algorithms on April 1st without this lower section - let the wrecking crew of
              experts in CP determine what is so wrong with the solution (the algorithm is correct but
              just will not work).


              Now, the number of primes with 300 digits is:

                 ((10^300) / ln(10^300)) = (3.33 \* (10^297))
              

              The max size of a prime number in that range is 52 DWORDS or 26 QWORDS which would convert
              to 232 characters so the total size of all path names describing all of these prime
              numbers will be:

                 (232 \* 3.33 \* (10^297)) = (7.7 \* (10^299)) BYTES
              

              The number of terabytes to contain this data would be:

                (7.7 \* (10^299) / (10^12)) = (7.7 \* (10^287)) TB
              

              The number of 4 TB drives to contain this total size would thus be:

                 ((1/4) \* 7.7 \* (10^287)) = (1.9 \* (10^287)) drives
              

              I don't think that Seagate has enough material to create that many drives. Penrose in his
              book "The Emperor's New Mind" estimated that the number of particles in the visible
              universe was 10^80, and after that problem has been solved, you still have another
              problem about how much time it would take to write out these prime number directories to
              the drives. So much for having the prime numbers available to use as trial multipliers to
              see if the product matches the semi prime.

              Lest you think it would make a difference (in the count and total size of the prime
              numbers) if you only saved the prime numbers that lie between 10^200 and 10^300:

                  ((10^300) / ln(10^300) - (10^200) / ln(10^200)) =
                            (1.447 \* (10^297) - 2.171 \* (10^197)) = 
                                               (1.447 \* (10^297))
              
                       or
              
                  (1.447 \* (10^297)) = (1.447 \* (10^297))
              

              Saving the number of prime numbers in a range of digits (from 200 to 300) would not even
              make a visible dent in the count because the actual calculation is subtracting a 197 digit
              number from a 297 digit number, leaving a 297 digit number with a dimin

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • World
              • Users
              • Groups