The zeta function for the semiprimes is \begin{aligned} & \zeta_{\Omega_ 2} (s) = \exp \sum _k^\infty \frac{P (k s)^2+P(2 k s)}{2 k} \end{aligned} where $P$ is the prime zeta function. But the zeros are hard to find. I calculated the near-zeros along the line $1/2 +it$ with func[t_] := 1/Abs@Sqrt[Exp[(PrimeZetaP[(1/2 + I t)]^2 + PrimeZetaP[2 (1/2 + I t)])]]; data = Table[{t, func[t]}, {t, .01, #, .01}] &[(**)10^4]; peaks = Pick[data, PeakDetect[data[[;; , 2]], .01, .001], 1]; in Mathematica, which takes a long time to evaluate, so I uploaded the data here: peaks = ToExpression[Import["https://raw.githubusercontent.com/martinq321/peaks/main/omega2"]]; Below is a plot of the absolute value of the first term of $\zeta_{\Omega_ 2} (s)$ $\left| \exp \left(P \left (1/2+ i t \right)^2/2+P \left(1+ 2i t \right)/2\right)\right|$ with the red lines marking near-zero points: [![enter image description here][1]][1] Given the above, the plot below shows \begin{aligned} &\sum _{k \in \text{peaks}} -\frac{\cos (k \log t)}{\ \sqrt{k}}, \quad 200 \geq t \geq 250 \end{aligned} where, despite the noise, the peaks show at the semiprimes and the primes: [![enter image description here][2]][2] and shows even clearer with the noise cleared up a bit: [![enter image description here][3]][3] li2 = Select[peaks, #[[2]] > 5 &][[All, 1]]; x1 = 200; x2 = 250; data1 = Table[(Sum[-Cos[li2[[p]] Log[t]]/Sqrt@p, {p, Length@li2}]), {t, x1, x2, .1}]; ListLinePlot[BilateralFilter[data1, 1., 1, MaxIterations -> 25], PlotStyle -> {AbsoluteThickness[3]}, DataRange -> {x1, x2}, ImageSize -> 700, Frame -> True, AspectRatio -> 1/8] What is going on here? I presume the peaks are also peaking at the primes because many of the 'zeros' are very close to the zeros of the zeta function. Is there a way to filter them out? Is there a better way to find the zeros of $\zeta_{\Omega_ 2} (s)$? [1]: https://i.sstatic.net/vh8pF.png [2]: https://i.sstatic.net/vP6Wz.png [3]: https://i.sstatic.net/uW236.png