I'm trying to make a function to calculate the Log sum of primes over a limited range $1/2n$ to $n$ or Chebychev theta function over limited range $1/2n$ to $n$. This will be used *only* for even numbers. To start off I'm trying to modify a function that works: LogSumPrime[n_] := Total[Log[Table[Prime[i], {i, PrimePi[n]}]]]; this will output as desired for `LogSumPrime[12]`: Log[2] + Log[3] + Log[5] + Log[7] + Log[11] So far so good. Now modifying to get range $1/2n$ to $n$: LogSumAllUpperPrime[n_] := Total[Log[Table[(Prime[i + PrimePi[n] - PrimePi[n/2] + 1]), {i, PrimePi[n] - PrimePi[n/2]}]]]; for `LogSumAllUpperPrime[12]`, it is fine: Log[7] + Log[11] for `LogSumAllUpperPrime[6]`, it is not fine: Log[5] It should be `Log[3] + Log[5]`. Now the problem stems from half of 6 being odd and the limits not starting for this at 3, while for 12 it starts at 6 and the problem does not matter. I do not understand Mathematica, so I cannot see how to solve this problem efficiently. If it were C, I'd just see if the bit is 1 or 0 to determine whether its even, but that may not be the best remedy here. I would like to do this quite efficiently as I will be working with quite large numbers and the `Table` approach is said to be reasonably efficient.