Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
A369351
The smallest number such that n or more numbers k exist such that a(n) - k = sopfr(a(n)) + sopfr(k), where sopfr(m) is the sum of the primes dividing m, with repetition.
9
6, 35, 77, 169, 287, 1147, 1517, 1517, 4352, 4352, 4352, 14647, 55488, 55488, 114091, 121673, 167137, 206837, 277928, 277928, 277928, 277928, 277928, 722473, 2165407, 2498227, 2498227, 2498227, 5271391, 5770603, 8321771, 8321771, 9983680, 9983680, 9983680, 9983680, 28277536, 28277536, 28277536, 28277536, 28277536
OFFSET
1,1
COMMENTS
From David A. Corneth, Feb 11 2024:
To find terms we can do the following:
a(n) - k = sopfr(a(n)) + sopfr(k) can be rewritten as
a(n) - sopfr(a(n)) = k + sopfr(k)
So one side depends on a(n) and the other side depends on k.
Now to find terms <= u, make a list V of values m + sopfr(m) where m <= 2*precprime(u). So like for 59 we get those values are 38, 44, 48 from V.
We look up 59 in a table W of values m - sopfr(m) and find that 77 is the smallest such value. Hence a(3) <= 77. By looking through all m <= 77 in V and then referring to W we find a(3) = 77.
LINKS
Michael S. Branicky, Table of n, a(n) for n = 1..60
David A. Corneth, PARI program
EXAMPLE
a(1) = 6 as 6 is the smallest number to have one number (k = 1) such that 6 - 1 = 5 = sopfr(6) + sopfr(1) = 5 + 0 = 5.
a(2) = 35 as 35 is the smallest number to have two numbers (k = 14, 15) such that 35 - 14 = 21 = sopfr(35) + sopfr(14) = 12 + 9 = 21, and 35 - 15 = 20 = sopfr(35) + sopfr(15) = 12 + 8 = 20.
a(3) = 77 as 77 is the smallest number to have three numbers (k = 38, 44, 48) such that 77 - 38 = 39 = sopfr(77) + sopfr(38) = 18 + 21 = 39, 77 - 44 = 33 = sopfr(77) + sopfr(44) = 18 + 15 = 33, and 77 - 48 = 29 = sopfr(77) + sopfr(48) = 18 + 11 = 29.
PROG
(Python)
from sympy import factorint
from functools import cache
from itertools import count, islice
from collections import Counter
kcount, kmax = Counter(), 0
@cache
def sopfr(n): return sum(p*e for p, e in factorint(n).items())
def f(n): # revised based on comment by David A. Corneth, Feb 11 2024
global kcount, kmax
target = n - sopfr(n)
for k in range(kmax+1, target+1):
kcount[k+sopfr(k)] += 1
kmax += 1
return kcount[target]
def agen(): # generator of terms
adict, n = dict(), 1
for m in count(2):
v = f(m)
if v not in adict: adict[v] = m
for i in range(n, v+1): yield m; n += 1
print(list(islice(agen(), 12))) # Michael S. Branicky, Feb 09 2024
KEYWORD
nonn
AUTHOR
Scott R. Shannon, Jan 21 2024
EXTENSIONS
a(24) from Michael S. Branicky, Feb 08 2024
a(25) from Michael S. Branicky, Feb 11 2024
More terms from David A. Corneth, Feb 11 2024
STATUS
approved