Me topé con una pregunta de programación que quería que calculara : $$G(n) = \sum _{i=1}^{n} \sum _{j=i+1}^{n} gcd(i, j).$$ Ahora he escrito un código para resolver este problema, pero se necesita un tiempo polinomial para resolver esto. hice esta pregunta aquí pero creo que necesito más conocimientos matemáticos antes de resolver esto algorítmicamente. Así que alguien me puede decir cómo debo resolver esta ecuación en tiempo sublineal. Creo que este problema tiene que ver algo con dirichlet-convolución, pero no entiendo cómo. Así que por favor me ayude a entender esto.
este es otro
$$S(A,B) = \sum _{a=1}^{A} \sum _{b=1}^{B} {a*b } \ f(gcd(a,b))$$ Aquí, f(n)=n, si n es cuadrado libre de lo contrario 0. También f(1)=1. Para este también pude escribir
_CACHE = {}
def G(a, b):
a = a % DIVISOR
b = b % DIVISOR
key = (a, b) if a > b else (b, a)
if key not in _CACHE:
_CACHE[key] = (a * b * F(fractions.gcd(a, b))) % DIVISOR
return _CACHE[key]
def S(A, B):
s = 0
for a in range(1, A+1):
for b in range(1, B+1):
s += G(a, b)
return s
#there is also a code for checking square free number but I have not posted it ,
Here I just wanted to show the time comlexity of the real code which computes
Tal vez haya una forma matemática de reducirlo a un tiempo lineal o sublineal. Por favor, ayúdenme.
0 votos
Cuántos pares $(i,j)$ con $1 \leqslant i < j \leqslant k$ y $\gcd(i,j) = d$ ¿están ahí? (El caso $d = 1$ es de especial relevancia).
0 votos
No pido el primer resumen. Estoy insinuando cómo se puede atacar eficazmente este problema. Es cierto que la insinuación es vaga, pero no quiero estropear el reto.
0 votos
@DanielFischer Creo que hay k**2-k(k+1)/2 pares
0 votos
No, no hay una fórmula tan fácil. Para un $d$ cuántos pares , la respuesta debe depender, por supuesto, de $d$ [y más $k$ ].