# Prime factorization over the Eisenstein integers $\mathbb{Z}[\zeta]$

I am trying to write a function f[a_,b_] which takes in two integers $$a,b$$ and returns the unique factorization of $$a+be^{2\pi i/3}$$ into the primes belonging to $$\mathbb{Z}[e^{2\pi i/3}]$$.

In other words, f gives the factorization of $$a+be^{2\pi i /3}$$ into Eisenstein primes.

Useful facts. The Eisenstein primes have the following possible forms:

• $$1-e^{2\pi i/3}$$
• Primes in $$\mathbb{Z}$$ congruent to $$2 \pmod 3$$
• The Eisenstein integers $$g,\bar{g}$$ such that $$g \bar{g} = q$$, where $$q \equiv 1 \pmod 3$$ is prime in $$\mathbb{Z}$$

Here, I denote $$\bar{z}$$ to mean $$(a+bB)(a+bB^2)$$. Also, Eisenstein integers are the elements of $$\mathbb{Z}[e^{2 \pi i/3}]$$.

Desired output. I am trying to create f to function similar to FactorInteger. It would output a list of pairs {x,y} for each Eisenstein prime $$x$$ dividing $$v=a+be^{2\pi i/3}$$, with $$y$$ being the highest power of $$x$$ dividing $$v$$.

Some convention. I denote B=1-E^(2Pi*i/3), and I want f to use this instead of E^(2Pi*I/3).

Example output. Because $$24-36B=B^2*2^2*(5+2B)$$, we have f[24,-36] = { {B,2} , {2,2} , {5+2B,1} }.

My 'work'. There was stuff here, but I realized I was forgetting something. Currently working on the program in question.

• I am not sure what's your exact difficulty. So you already have an "conceptual algorithm" in mind, and just unable to articulate it in Mathematica language? For example, do you know how to handle the hard case of factor a prime $p\equiv 1 \pmod{3}$? Commented Aug 9, 2020 at 18:02
• @pisco Yes. As to factoring $p$, I know how to brute-force it. I would need some time to think of a better method to factor $p$. Commented Aug 9, 2020 at 18:07
• mathematica.stackexchange.com/q/41440/4346 Commented Aug 10, 2020 at 23:18
• I spent a chunk of yesterday trying to figure out how one might do this. I should have just waited for @ChipHurst to comment... Commented Aug 11, 2020 at 14:10
• That is handled by factoring the norm via FactorInteger, then using division over Z[w] to get divisors of a+bw (as opposed to divisors of a+bw^2). Commented Aug 11, 2020 at 14:36