You can input both numbers and arithmetic expressions. Supported operators are +, -, *, /, ^, and !. (Note: you must be sure that the division will produce an integer otherwise the results are not guaranteed). Examples include:
An elliptic curves is a Genus I curve given by the equation y2 = x3 + ax2 + bx + c. We define a simple set operation @ on these curves which is performed as follows: for any two points A and B, draw a line which intersects them. This line will interset the curve at one more point C. A@B is then defined to be C.
This set operation unfortunately lacks some properties that we would like, such as containing a zero element in the set. We fix this by defining the operation + on elliptic curves to be (A*B)*O, or some fixed point O. This fixed point O then becomes the zero element and the set of (rational) points on the curve become a group under this operation.
It turns out that if one does the arithmetic requires for these operations mod p for some prime p that one still gets a point on the curve (provided that one started with a rational point).
Lenstra's algorithm takes advantage of this fact by doing the arithmetic mod n, for the composite number that we wish to factor n. While the operation is no longer guaranteed to give us a point on the curve, this isn't a problem. In fact, it's what we're hoping for. When the arithmetic fails, it will be because we have found some number which is not relatively prime to n. In most cases, we are lucky enough for our number not to be 0 or n, so that we will have found a non-trivial factor.
It should be noted that performing k additions of the point to itself is extremely time-consuming if it is done by actually doing k additions. Thankfully, there is a much more efficient way that operates in O(log2k) time. First, one does log2k additions of the point (call it P) to itself, generating the partial sums
Then kP is simply the sum of the points Pi for which the ith bit of k in binary form is 1.