This link has an online application which factors large numbers using
the Elliptic Curve method.
http://www.alpertron.com.ar/ECM.HTM

Try a value like
12991627363868130524522557049357159496792541860595064869631.

On my computer this application factors this number in 15 seconds.
Anything relying on trial division would take longer than your
computer will last.

Don


On Apr 7, 9:11 am, harish <hareeshgn...@gmail.com> wrote:
> Hi All,
>
> I got a reply at another forum; here is the link for 
> thathttp://stackoverflow.com/questions/5581040/i-have-a-new-algorithm-to-...
>
> .. Don i believe you are correct.
>
> Thanks
> Harish
>
> On Apr 7, 4:56 pm, harish <hareeshgn...@gmail.com> wrote:
>
> > Hi Don, I reposting my reply to you to all now..
>
> > The GNFS mentioned here is polynomial time as I got to understand from
> > wikipedia. I claim that the above algorithm is linear time.
>
> > I putting the proof here for correctness and linear time (warning its
> > big and messy). Also this one applies to the algorithm given in the
> > blog:http://randomoneness.blogspot.com/2011/04/algorithm-to-find-factors-o...
>
> > (The above given is a faster version of the one given in my blog)
>
> > Analysis of algorithms:
>
> > In below proof used:
> > Operation A is:  While r is smaller than mL then, mL can be
> > decremented by one and the new r can be computed as r + mR.
> > As taking out one mL, means one mR is send to remainder. (first inner
> > while loop)
> > Operation B is:  While r is bigger than mL, then mL can be taken out
> > from r and this basically increases mR by one. (2nd inner while loop)
> > Operation C is:  Operations A and B can be repeated till, r not equals
> > mL. When we arrive at the results, Operation C is
> > exited. (main while loop)
>
> > 1. Proof of correctness: If the number is a perfect square root then,
> > the answer is found when square root is found.
> > For more reading on Square root 
> > refer:http://en.wikipedia.org/wiki/Square_root
> > Else if the number is not a perfect square, then r is not equal to 0.
> > Hence it enters the while loop.
> > Operation A: While mL is greater than r, then mL is decremented by 1,
> > and r is incremented by mR.
> > The step is correct because, mL * mR means mR added mL times. If one
> > is taken from mL, then mR is added
> > (mL-1) times. So, one mR is added less, when taking one out of mL.
> > This mR is added to r. – (1)
> > Operation B: While mL is less than r, then mR is incremented by 1 and
> > r is decremented by mL. This
> > step is correct because, mL * mR means mL added mR times. If one is
> > added to mR, then mL is added (mR + 1)
> > times in mL*mR. So if mR is incremented by 1, then to equate to N, mL
> > can be taken away from r the
> > remainder. – (2)
> > Operation C: Operation A and B are repeated till mL is equal to r.
> > This leads to the answer because:
> > We start from the approximate square root of the number. As operation
> > A and B, calculates the remainder r,
> > when the factors are mL and mR. Operation A never leads to the answer
> > as, r + mR is always greater than mL,
> > as mL is smaller than mR. Operation B, leads to the answer. If for any
> > case mL is a factor, then, when r is
> > reduced by mL in operation B to mL (r becomes a factor of mL). As
> > Operation A and B are correct (refer 1 and
> > 2), if there is a factor then this leads to r to be zero. And before r
> > becomes zero, r should be equal to mL. At this
> > point the answer is found.
>
> > 2. Proof that the number of Operations required is linear: Let’s take
> > only the case of numbers which are not
> > perfect squares.
> > The algorithm consists of basic operations, of addition, subtraction
> > and comparison. Let’s see how
> > many times a different while loops are invoked.
> > We take mL as nearest square root. And take mR > mL.
> > There for Operation A is invoked only once during one iteration of the
> > Operation C. This is because, by
> > incrementing r by mR, increases r to be greater than mL (mR > mL) and
> > hence invalidates the loop condition.
> > The basic number of steps in Operation A is 3: 1. While loop
> > evaluation, 2. decrement mL by 1 and 3. Increment
> > r by mR.
> > Operation B is repeated to find a r which is greater than mL. As mR
> > varies as algorithm progress, its
> > hard to calculate number of time r Operation B is repeated. The basic
> > number of steps in Operation B is 3: 1.
> > while loop evaluation, 2. Increment mR by 1 and 3. Decrement r by mL.
> > However two things are certain, for worst case scenario i.e. N is
> > prime number, mL is reduced to 1 and
> > mR is incremented to N. From this we can conlude that, Operation B is
> > repeated N-sqrt(N) times i.e. Increment
> > mR to N from sqrt(N) and Operation A is repeated till mL becomes 1 i.e
> > from sqrt(N) to 1. Based on this the
> > number of steps required is:
> > Operation B : N – sqrt(N)
> > Operation A : sqrt(N)
> > And the Operation C, which apart from the steps we calculate from
> > Operation A and Operation B, will
> > have 2 basic steps; 1. the main while evaluation, 2. the exit
> > evaluation of one of the while either of Operation A
> > or B; during each loop execution. Operation C is called maximum of N
> > times in worst case, as its sum of
> > number of times Operation A and B = (N- sqrt(N) + sqrt(N) = N.
> > The total number of steps is:
> > => Operation B + Operation A + Operation C
> > => (N – sqrt(N))* 3 + sqrt(N) * 3 + 2*N
> > => 3*N+ 2*N
> > => 5*N
> > Hence the total number of steps is 5*N in worst case and lesser in all
> > other cases.
> > However, in normal computers as the input size increases the time
> > taken to do addition, subtraction and
> > comparison varies. As the input size increases above the size of
> > computers word size, the number of operations
> > required for the computing basic steps are higher. But for a given
> > arbitrarily large number (higher than computer
> > word size), the time taken for each basic operation would be fixed,
> > even though is larger than in case of smaller
> > number. Hence time taken would increase by the hidden factor times
> > 5*N.
>
> > On Apr 7, 1:14 am, Don <dondod...@gmail.com> wrote:
>
> > > The General Number Field Sieve is the fastest known method of
> > > factoring large numbers, but the elliptic curve method may be faster
> > > in some cases. Either one is much faster than your method.
> > > Don
>
> > > On Apr 6, 12:58 pm, harish <hareeshgn...@gmail.com> wrote:
>
> > > > Hi all,
>
> > > > I have developed an algorithm to find factors of a given number. Thus
> > > > it also helps in finding if the given number is a prime number. I feel
> > > > this is the fastest algorithm for finding factors or prime numbers.
>
> > > > I have put the algorithm 
> > > > here:http://randomoneness.blogspot.com/2011/04/algorithm-to-find-factors-o...
> > > > This one finds if a give number is prime in say time frame of 5*N
> > > > (where N is the input number). So I hope I can call this a linear time
> > > > algorithm.
>
> > > > Can anybody verify the above for me?
>
> > > > A faster version of algorithm i put here:
>
> > > > Input: A Number (whose factors is to be found)
> > > > Output: The two factor of the Number. If the one of the factor found
> > > > is 1 then it can be concluded that the
> > > > Number is prime.
>
> > > > Integer N, mL, mR, r;
> > > > Integer temp1; // used for temporary data storage
> > > > mR = mL = square root of (N);
> > > > /*Check if perfect square*/
> > > > temp1 = mL * mR;
> > > > if temp1 equals N then
> > > > {
> > > >   r = 0; //answer is found
> > > >   End;}
>
> > > > mR = N/mL; (have the value of mL less than mR)
> > > > r = N%mL;
> > > > while r not equals 0 do
> > > > {
> > > >   mL = mL-1;
> > > >   r = r+ mR;
>
> > > >   temp1 = r/mL;
> > > >   mR = mR + temp1;
> > > >   r = r%mL;}
>
> > > > End; //mR and mL has answer- Hide quoted text -
>
> > > - Show quoted text -- Hide quoted text -
>
> > - Show quoted text -
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to