Skip to main content
6 of 6
added 2 characters in body
onepound
  • 343
  • 1
  • 9

Number-theoretic 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], 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.

onepound
  • 343
  • 1
  • 9