Skip to main content
1 of 6
onepound
  • 343
  • 1
  • 9

prime function using Table

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] its fine:

Log[7] + Log[11]

for LogSumAllUpperPrime[6] its 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.

onepound
  • 343
  • 1
  • 9