From: Risto Lankinen on
On 7 huhti, 18:02, "Dik T. Winter" <Dik.Win...(a)cwi.nl> wrote:
>
> But the 'k' was integer I thought?

Yes indeed, inaccurate of me. My intention was...

> Fermat's factorization suffers a fixation to _naturals_,
> it's the 'k' in 'N+ki' you really should be interested
> about.

- Risto -
From: Nick Wedd on
In message
<39d01add-637a-4193-9f87-51c27ba7db9b(a)u69g2000hse.googlegroups.com>,
Pubkeybreaker <pubkeybreaker(a)aol.com> writes
>On Apr 7, 8:44�am, Risto Lankinen <rlank...(a)gmail.com> wrote:
>> On 4 huhti, 17:37, "Dik T. Winter" <Dik.Win...(a)cwi.nl> wrote:
>>
>>
>>
>> > But in the Fermat factorisation also the 'non-interesting' cases are
>> > interesting. �Consider 91 = 100 - 9, which would factorise 91. �In
>> > general, if we have N + d^2 = n^2, and N is odd, then at least one of
>> > d or n is even.
>>
>> Fermat's factorization suffers a fixation to integers,
>
>Huh? This last sentence is pure gibberish.

I think what he means is "Fermat's factorisation method can only be used
to factorise natural numbers". He is interested in factorising Gaussian
integers.

Nick
--
Nick Wedd nick(a)maproom.co.uk
From: Pubkeybreaker on
On Apr 7, 1:00 pm, Nick Wedd <n...(a)maproom.co.uk> wrote:
> In message
> <39d01add-637a-4193-9f87-51c27ba7d...(a)u69g2000hse.googlegroups.com>,
> Pubkeybreaker <pubkeybrea...(a)aol.com> writes
>
> >On Apr 7, 8:44 am, Risto Lankinen <rlank...(a)gmail.com> wrote:
> >> On 4 huhti, 17:37, "Dik T. Winter" <Dik.Win...(a)cwi.nl> wrote:
>
> >> > But in the Fermat factorisation also the 'non-interesting' cases are
> >> > interesting.  Consider 91 = 100 - 9, which would factorise 91.  In
> >> > general, if we have N + d^2 = n^2, and N is odd, then at least one of
> >> > d or n is even.
>
> >> Fermat's factorization suffers a fixation to integers,
>
> >Huh?   This last sentence is pure gibberish.
>
> I think what he means is "Fermat's factorisation method can only be used
> to factorise natural numbers".  He is interested in factorising Gaussian
> integers.

One factors primes that are 1 mod 4 over the Gaussians via
Cornachia's algorithm.
It runs in polynomial time. 2 factors trivially.

Primes that are 3 mod 4 are inert.

One factors all other Gaussian numbers by factoring their norms over
Z.

Hopefully, this ends the discussion.
From: Pubkeybreaker on
On Apr 7, 10:54 am, Risto Lankinen <rlank...(a)gmail.com> wrote:
> On 7 huhti, 16:32, Pubkeybreaker <pubkeybrea...(a)aol.com> wrote:
>
> > Do not post code.  Noone has the time or inclination to read it.
>
> My article was posted on multiple fora.  Please indicate
> the particular one that was offended by my article and I'll
> discontinue posting there.

Stop cross posting. Code is not relevant to any of the groups
you posted to. Discussion of algorithms IS relevant.

Your article was NOT offensive. But I strongly doubt if anyone
will be bothered to read it.

The discussion of ALGORITHMS is however relevant in sci.crypt,
sci.math,
alt.math, alt.math.undergrad etc.

And I gave a complete algorithm for how to factor Gaussians in another
post.
From: Risto Lankinen on
On 7 huhti, 20:00, Nick Wedd <n...(a)maproom.co.uk> wrote:
>
> I think what he means is "Fermat's factorisation method can only be used
> to factorise natural numbers". He is interested in factorising Gaussian
> integers.

Nope. I'm using gaussian integers to factor natural numbers.

In the Wikipedia article "One-way function" it says about integer
factorization:

"Consider the function f that takes as input two integers and
multiplies them. This function is easy to compute, but inverting
this function requires solving the factoring problem (which is
believed to be hard)."

As far as I can tell, this is equivalent to:

"Consider the function f that takes as input a complex number,
multiplies it by itself, and discards imaginary part. This function
is easy to compute, but inverting this function requires solving
the factoring problem (which is believed to be hard)."

Inverting a number multiplied by itself is called a square root.

I have discovered a new numeric method for taking the square
root of a gaussian integer, which is the gist of my claim.
However, because it is very fundamental in the way that it
works (for instance, it does not need multiplication of numbers
greater than 1 which might make it easily convertible into a
satisfiability problem), I am wondering whether it could be
modified to work reasonably efficiently even if its argument
has an unknown imaginary part.

On 7 huhti, 16:32, Pubkeybreaker <pubkeybrea...(a)aol.com> wrote:
>
> If you want to be taken seriously, then post a description of
> the method

Here's an informal description:

Base i-1 has exponents 1,-1+i,-2i,2+2i,-4,4-4i,8i,-8-8i,16,
after which the exponent e[k] = 16*e[k-8] . Every subset
of these exponents have a sum which addresses one gaussian
integer. Every gaussian integer is addressed by one and
only one such subset of exponents. Hence, i-1 can be used
as a number base for gaussian integers with digits 0 and 1.

Any base which uses only digits 0 and 1 has a unique square
signature. Due lack of formal math education, I do not know
how to define this in a rigorous manner, but kindly accept
description thru a few examples:

11 ==> 121
101 ==> 10201
111 ==> 12321
1001 ==> 1002001
1101 ==> 1212201
1110100101 ==> 1232322234240210201

(Normal decimal calculator can compute square patterns as
long as there are at most nine 1's in the source string).

Some characteristics of the square signature are:

- Only even-indexed (begin at 0) positions can have odd value
- Digit in index n depends on the _parities_ of even-indexed
digits between 0 and 2n, and only on them
- Consequently, the parity of digit 2n depends on the parities
of even-indexed digits 2n-2..0 and n

Square signature is independent of the base (like the decimal
calculator suggestion should point out). However, converting
a binary numeric representation of a number into the square
signature requires the concept of a carry/borrow.

Carry and borrow are /digital invariants/ (=DI) of a given base.
In base 10, the DI is {-1,+10} which means that subtracting 1
from a digit in position 'n' and adding 10 to the digit in position
'n-1' does not have any effect to the value of the number that
it represents. In base 2 the DI is {-1,+2}, in base -2 the DI is
{+1,+2} and in base i-1 the DI is {+1,+2,+2}.

Hence, the following are equivalent (in base-2):
11001 = 25 (apply {-1,+2} to bit position 3)
10201 = 25 - Square signature!
.... or...
1001 = 9 (apply {-1,+2} to bit position 3)
0201 = 9 (apply {-1,+2} to bit position 2)
0121 = 9 - Square signature!
.... or...
1010001 = 81 (apply {-1,+2} to bit position 4)
1002001 = 81 - Square signature!
.... or...
110001 = 49 (apply {-1,+2} to bit position 4)
102001 = 49 (apply {-1,+2} to bit position 3)
101201 = 49 (apply {-1,+2} to bit position 5)
021201 = 49 (apply {-1,+2} to bit position 2)
021121 = 49 (apply {-1,+2} to bit position 4)
013121 = 49 (apply {-1,+2} to bit position 3)
012321 = 49 - Square signature!

Note that in which order (of bit positions) the digital invariants
are applied doesn't matter, but some of the orders may cause
intermediate negative values to some digits. That's OK as long
as the eventual result is a square signature.

Now, in base i-1 ...
111000001 = 9+0i (apply {+1,+2,+2} to bit position 8)
123200001 = 9+0i (apply {+1,+2,+2} to bit position 6)
124420001 = 9+0i (apply {-1,-2,-2} to bit position 7)
112220001 = 9+0i (apply {-1,-2,-2} to bit position 7)
100020001 = 9+0i - Square invariant! (SQRT = 10001 = -3+0i - OK!)

Again, the order in which digital invariants are applied does
not matter.

I have no easy way to describe the algorithm, except by using
the source code that I already sent. But let me try anyway:

1. Bit[0] should be 1 (odd numbers only)

2. Every bit[2n+1] should be even. If bit[1] is not even, bail
out, because it can't be evened without affecting "fractional"
bits using DI= {+1,+2,+2}. If any of bit[3...2n+1] is not even,
add DI to make them even.

3. Bit[1] is now =0 or =2 . If Bit[1] = 0, parity of Bit[2]
must be even; if Bit[1]=2, parity of Bit[2] must odd. Bail out
if not true.

4. Bit[2] is now (0 or 1), or (2 or 3). If (2 or 3), parity of
Bit[4] must be odd; else parity of Bit[4] must be even.

Going on from here, the bit[n] must reflect the sum of the
products of parities of bit[0]*bit[2n] + bit[2]*bit[2n-2] +
bit[4]*bit[2n-4]. If 'n' is even, bit[n] may itself be odd
if bit[n/2] so determined. To go further, please study the
code of function Squirt() in my original example.

This process goes on as long as there are non-zero bits in the
operand, _and_then_some (up to 8, but perhaps overdoing by just
6 bits is enough). This is due to the fractal nature of the
space filling curve generated by base i-1 .

Note that this algorithm DOES NOT FACTORIZE! It takes square
root of a gaussian integer! (To use it for factorization is
a different topic but note that bits 2, 6, 10, 14, etc. in the
i-1 representation of a complex number are -2i, 8i, -32i, 64i,
etc. which are convenient places to branch for unknowns...)

That's all for now. Alas, I can lead a camel to oasis but I can
not force one to drink. If you're not interested, please don't
waste ammo to shoot down something that you think wasn't flying
to begin with. For others, thanks for the interest.

Cheers!

- Risto -