The proof is incorrect for the following reason: the definition of primary is not symmetric, and you used the symmetry without realizing in your proof. Lets go over it line by line:
"Let $xy \in \mathfrak a$ thus $xy \in r(\mathfrak a)$. " So far it looks good.
"By primality $x \in r(\mathfrak a)$." Here is the issue. You mean By primality $x \in r(\mathfrak a)$ or $y \in r(\mathfrak a)$ .
"Thus $x^n \in \mathfrak a$". Here the line above becomes, "Thus, there exists some $n$ such that $x^n \in \mathfrak a$ OR there exists some $m$ such that $y^m \in \mathfrak a$".
But you need $n=1$ to make $\mathfrak a$ primary.
A counterexample, acording to wiki, is the following:
$$R=k[x,y,z]/(xy-z^2) ; \mathfrak a= (\bar{x}, \bar{z})^2$$
Then $rad(\mathfrak{a})=( \bar{x}, \bar{y})$ is prime, but $\mathfrak a$ is not primary, as $\bar{x} \bar{y} =\bar{z}^2 \in \mathfrak a$ but you have neither $\bar{x} \in \mathfrak {a}$ nor $\bar{y}^n \in \mathfrak a$.
With this example, you can see exactly where your proof goes wrong: $\bar{x} \bar{y} \in rad(\mathfrak{a})$ gives as above either $\bar{x}^n \in \mathfrak{a}$ or $\bar{y}^m \in \mathfrak{a}$. The second condition does not happen, and the first only happens for $n \geq 2$, but you need $n=1$.
P.S. The subtle mistake is related to the following: the definition of the primary is basically the following: $\mathfrak a$ is primary exactly when $xy \in \mathfrak{a}$ implies that one of the following three relations happen.
- $x \in \mathfrak{a}$
- $y \in \mathfrak{a}$
- $x \in rad(\mathfrak{a})$ AND $y \in rad(\mathfrak{a})$.
If you read your proof carefully, and not skip the second part where $xy \in rad(\mathfrak{a})$ implies $x \in rad(\mathfrak{a})$ OR $y \in rad(\mathfrak{a})$, then you will see that you proved that
$rad(\mathfrak{a})$ prime and $xy \in \mathfrak{a}$ implies that
- $x \in rad(\mathfrak{a})$ OR $y \in rad(\mathfrak{a})$.
The fact that you skipped this part, missled you into confusing the OR shish should had been there with an AND at the end of the proof.