Skip to content

Commit f897784

Browse files
committed
modified: Math/sum_of_prime_powers.sf -- simplified a bit
1 parent 7c4278c commit f897784

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

Math/sum_of_prime_powers.sf

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
f(n) = if(n <= 1, return(0)); my(r=sqrtint(n)); my(V=vector(r, k, n\k)); my(L=n\r-1); V=concat(V, vector(L, k, L-k+1)); my(T=vector(#V, k, V[k]*(V[k]+1)\2)); my(S=Map(matrix(#V, 2, x, y, if(y==1, V[x], T[x])))); forprime(p=2, r, my(sp=mapget(S, p-1), p2=p*p); for(k=1, #V, if(V[k] < p2, break); mapput(S, V[k], mapget(S, V[k]) - p*(mapget(S, V[k]\p) - sp)))); mapget(S, n)-1;
1212
g(n, j=2) = if(n <= 1, return(0)); my(r=sqrtint(n)); my(V=vector(r, k, n\k)); my(F(n, j)=(subst(bernpol(j+1), x, n+1) - subst(bernpol(j+1), x, 1)) / (j+1)); my(L=n\r-1); V=concat(V, vector(L, k, L-k+1)); my(T=vector(#V, k, F(V[k], j))); my(S=Map(matrix(#V, 2, x, y, if(y==1, V[x], T[x])))); forprime(p=2, r, my(sp=mapget(S, p-1), p2=p*p); for(k=1, #V, if(V[k] < p2, break); mapput(S, V[k], mapget(S, V[k]) - p^j*(mapget(S, V[k]\p) - sp)))); mapget(S, n)-1;
13-
a(n) = my(s=0); forprime(p=2, sqrtnint(n,3), s += (p^(logint(n, p)+1) - 1)/(p-1) - p - 1); f(n) + g(sqrtint(n)) - g(sqrtnint(n, 3)) + s;
13+
a(n) = my(s=0); forprime(p=2, sqrtnint(n,3), s += (p^(logint(n, p)+1) - 1)/(p-1) - p*p - p - 1); f(n) + g(sqrtint(n)) + s;
1414
b(n) = my(s=0); forprime(p=2, sqrtint(n), s += (p^(logint(n, p)+1) - 1)/(p-1) - p - 1); f(n) + s;
1515

1616
)
@@ -41,7 +41,7 @@ func sum_of_primes(n, j=1) {
4141
func sum_of_prime_powers(n) {
4242

4343
# a(n) = Sum_{p prime <= n} p
44-
# b(n) = Sum_{n^(1/3) < p prime <= n^(1/2)} p^2
44+
# b(n) = Sum_{p prime <= n^(1/2)} p^2
4545
# c(n) = Sum_{p prime <= n^(1/3)} f(p)
4646

4747
# sum_of_prime_powers(n) = a(n) + b(n) + c(n)
@@ -50,13 +50,13 @@ func sum_of_prime_powers(n) {
5050
var cr = n.icbrt
5151

5252
var ps1 = sum_of_primes(n)
53-
var ps2 = (sum_of_primes(sr, 2) - sum_of_primes(cr, 2))
53+
var ps2 = sum_of_primes(sr, 2)
5454

55-
# f(p) = sum(1..n.ilog(p), {|k| p**k }) - p
56-
# = (1 - p**(n.ilog(p)+1))/(1-p) - p - 1
55+
# f(p) = sum(1..n.ilog(p), {|k| p**k }) - p*p - p
56+
# = (1 - p**(n.ilog(p)+1))/(1-p) - p*p - p - 1
5757

5858
var ps3 = cr.primes.sum {|p|
59-
(p**(n.ilog(p)+1) - 1)/(p-1) - p - 1
59+
(p**(n.ilog(p)+1) - 1)/(p-1) - p*p - p - 1
6060
}
6161

6262
ps1 + ps2 + ps3

0 commit comments

Comments
 (0)