Informática Reto 1 de programación: Generar los primeros x números primos, animate y pon tú solución


En la carpeta de MEGA hay dos ficheros

- reto_primos_precalculados.7z que es el que los ha precalculado en tiempo de compilación, he subido la version .exe ya que entiendo que nadie más usa Linux como yo por si alguno quiere ejecutarlo de forma cómoda. El tiempo de compilación ha sido de 6.969 segundos y el de ejecución 216ms con lo que lo que yo sabía, menos de un segundo en total de ejecución

- reto_primos_tiempo_real.7z que es el que calcula en tiempo real los valores de los primos, 1.7 segundos en total, incluye el ejecutable para windows por si alguien tiene curiosidad en probarlo por si mismo

Los tiempos que obtengais seguramente sean mejores porque tengo muy mal rendimiento I/O, cosas que pasan, unos de los SSDs (un kingston) les hace la puñeta al resto y en cuanto hay la más mínima carga de trabajo de I/O el ordenador lagea que da gusto, es un fallo conocido pero Kingston dice que lo ha solucionado con un firmware, en fin, yo era cliente fiel de la marca pero ya no, bloquea al resto y hace que escribir un archivo de mierda no sea instantáneo, no digamos si se trata de leer cosas o escribirlas

A mi no me gusta hacer asi las cosas, ¿querías el código? Pues nada, en cuanto he llegado a casa lo he creado y listo pero mal, porque de ese código pues no voy a poder explicar mucho por no decir nada, si hubiera tenido mi margen para crearlo en la nube pues sería mucho más didáctico que era la única intención por la que te dije que sí a esto, para que todo el mundo aprendiese, los ejecutables estan porque me niego a ir diciendo como se compila o solucionar los errores que se puedan ir teniendo

Por mi parte es el fin, ya he subido el código y aunque tiene margen de mejora es que no, esto ha pasado de ser algo divertido a ser una obligación y yo las obligaciones me las quito rápido de encima y por lo tanto es una buena solución, una que se que es complicado superar y acabo con esto para pasar al siguiente tema o lo que quiera

Si hay poco tiempo no es lo mio, a mi me gusta disfrutar y dar una oportunidad al resto, que sea algo interesante. Yo anoche mismo podría haber creado ambos proyectos y acabar de un plumazo con las opciones de todo el mundo pero es que no era mi idea o intención. No me divierto, yo dejé de competir a nivel nacional pese a que se me daba bien porque había un crono contando, me gusta saborear el momento yendo a mi ritmo
 
ABRAZOS GRATIS
Tumblr_l_224061373256919.gif
 
Hala, el mío va más lento. Eso es calcular los primos, imprimirlos tarda un rato.

1729269578948.webp
 
@Jorge2019 y yo estabamos a punto de medirnos las pollas haciendo un reto de programación y bueno, en vez de ser entre dos pues que sea entre todos los que se animen

En este caso es generar e imprimir los primeros primos contenidos hasta el número 10.000.000 o lo que es lo mismo, los primos que hay entre el 0 y el 10.000.000

El más rápido gana, de momento eso lo dejamos para luego porque cada ordenador es un mundo y ya se verá como se hace

Y bueno, aqui tenemos una implementación a lo bruto, es O(n²) pero hace el trabajo y por lo tanto es mi primera "entrega", muy mejorable pero de eso se trata, de que haya una compentecia para darle emoción al asunto :gaydude:


No puede ser más sencillo, literalmente coge un número y prueba a dividir entre todos los demas a partir del 2, si nadie lo divide es que es primo. Solo calcula hasta 100 porque da lo mismo 100 que 10 millones, el algoritmo es el mismo

------------------------------------------------

Trucos para detecar si un número es primo

- En vez de probar desde el 2 hasta n (o el propio número) hay una propiedad matemática que dictamina que solo es necesario probar hasta raiz de n, o lo que es lo mismo, si tengo el número 100 para ver si es primo le hago la raíz que es 10 y solo tendría que probar desde el 2 hasta el 10, me ahorro probar desde el 10 hasta el 99, un ahorro de calculo importante

- Hay otra propiedad llamada teorema fundamental de la aritmética que dice que se pueden encontrar rangos de números entre los que no hay primos, viene a ser k!+2, k! + 3,..., k!+k

! es el factorial, pongo un ejemplo, para k = 6
__ 6!+2 = 722
__ 6!+3 = 723
__ 6!+4 = 724
__ 6!+5 = 725
__ 6!+6 = 726

Con lo que en el rango de [722,726] no hay números primos, si en vez de k = 6 usamos un valor grande el rango será más grande (el rango es de k elementos) y puede ahorrar más tiempo de cálculo porque vamos eliminando opciones

-----------------------------------------------

Pues nada, espero que os animeis

Algo tiene que ver con el hilo, yo hace años, era muy muy muy muy friki con los ordenadores, andaba con los amigos con LN2 en los PCs y competiamos en una liga mundial que hay del programa SuperPi, que viene a ser algo parecido, buscar numeros primos en un tiempo, pues llegue a tener el record de España en la categoria de 1M.
 
Fue hace ya muchos años, fallecio mi compañero y deje todo.
 

Adjuntos

  • IMG_0110.webp
    IMG_0110.webp
    196 KB · Vistas: 44

En la carpeta de MEGA hay dos ficheros

- reto_primos_precalculados.7z que es el que los ha precalculado en tiempo de compilación, he subido la version .exe ya que entiendo que nadie más usa Linux como yo por si alguno quiere ejecutarlo de forma cómoda. El tiempo de compilación ha sido de 6.969 segundos y el de ejecución 216ms con lo que lo que yo sabía, menos de un segundo en total de ejecución

- reto_primos_tiempo_real.7z que es el que calcula en tiempo real los valores de los primos, 1.7 segundos en total, incluye el ejecutable para windows por si alguien tiene curiosidad en probarlo por si mismo

Los tiempos que obtengais seguramente sean mejores porque tengo muy mal rendimiento I/O, cosas que pasan, unos de los SSDs (un kingston) les hace la puñeta al resto y en cuanto hay la más mínima carga de trabajo de I/O el ordenador lagea que da gusto, es un fallo conocido pero Kingston dice que lo ha solucionado con un firmware, en fin, yo era cliente fiel de la marca pero ya no, bloquea al resto y hace que escribir un archivo de mierda no sea instantáneo, no digamos si se trata de leer cosas o escribirlas

A mi no me gusta hacer asi las cosas, ¿querías el código? Pues nada, en cuanto he llegado a casa lo he creado y listo pero mal, porque de ese código pues no voy a poder explicar mucho por no decir nada, si hubiera tenido mi margen para crearlo en la nube pues sería mucho más didáctico que era la única intención por la que te dije que sí a esto, para que todo el mundo aprendiese, los ejecutables estan porque me niego a ir diciendo como se compila o solucionar los errores que se puedan ir teniendo

Por mi parte es el fin, ya he subido el código y aunque tiene margen de mejora es que no, esto ha pasado de ser algo divertido a ser una obligación y yo las obligaciones me las quito rápido de encima y por lo tanto es una buena solución, una que se que es complicado superar y acabo con esto para pasar al siguiente tema o lo que quiera

Si hay poco tiempo no es lo mio, a mi me gusta disfrutar y dar una oportunidad al resto, que sea algo interesante. Yo anoche mismo podría haber creado ambos proyectos y acabar de un plumazo con las opciones de todo el mundo pero es que no era mi idea o intención. No me divierto, yo dejé de competir a nivel nacional pese a que se me daba bien porque había un crono contando, me gusta saborear el momento yendo a mi ritmo
mereido
 
@JC Denton me puedes dar algunas instrucciones para ejecutar esto?
es la primera vez que veo esta waina
 
@JC Denton tu programa es muy rápido
puede que más rápido que mi script
pero sucede una cosa
yo he contado tanto el tiempo que tarda el script en encontrar los primos como el tiempo que tarda en imprimir los números

tu programa creo que solo cuenta el tiempo en el que imprime los números
por lo que me gustaría que me aclarases esa duda
y de tal manera necesitaría que el programa contase el tiempo que tarda en encontrar los primos

deja de mosquearte shur
siempre hemos estado de coña
perdona si se ha rozado mi alma con la tuya
solo quería arañar tus emosiones
 
Joder gente llego tarde , váis a hacer más así?

Precisamente por eso no quería hacerlo, es que no han pasado ni 24 hora y ya con prisas

Hay gente que no vive por y para forear y a mi con la presión del reloj no me gusta hacer las cosas

Olvidate de mi, cuelga lo que sea a ver si está por debajo de 7 segundos que es la segunda más rápida :mola:
 
Algo tiene que ver con el hilo, yo hace años, era muy muy muy muy friki con los ordenadores, andaba con los amigos con LN2 en los PCs y competiamos en una liga mundial que hay del programa SuperPi, que viene a ser algo parecido, buscar numeros primos en un tiempo, pues llegue a tener el record de España en la categoria de 1M.

Yo nunca he sido de forzar la máquina, justo lo contrario, yo hago underclock a mis ordenadores :elrisas:

Prefiero eficiencia y menos ruido a potencia bruta

Me alegro, cada uno disfruta a su manera de esto :mola:
 
Yo nunca he sido de forzar la máquina, justo lo contrario, yo hago underclock a mis ordenadores :elrisas:

Prefiero eficiencia y menos ruido a potencia bruta

Me alegro, cada uno disfruta a su manera de esto :mola:

Yo fue durante una epoca que competiamos, ahora lo tengo de serie todo, cada vez me aburre mas el PC. Sobre todo el andar enredando con el.
 
@JC Denton tu programa es muy rápido
puede que más rápido que mi script
pero sucede una cosa
yo he contado tanto el tiempo que tarda el script en encontrar los primos como el tiempo que tarda en imprimir los números

tu programa creo que solo cuenta el tiempo en el que imprime los números
por lo que me gustaría que me aclarases esa duda
y de tal manera necesitaría que el programa contase el tiempo que tarda en encontrar los primos

deja de mosquearte shur
siempre hemos estado de coña
perdona si se ha rozado mi alma con la tuya
solo quería arañar tus emosiones

El ejecutable es precisamente para eso, para que no tengas que compilar nada, se compilan con "cargo run --release", cuando tengas instalado Rust descomprimes el que quieras de los dos, entras y viendo el fichero .toml te vas a la barra del explorador y escribes "cnd" + intro y luego el cargo run --release

Una vez que los compile el ejecutable esta en target -> release (o debug si no has puesto lo de --release) -> Estará el ejecutable o libreria si es que lo es

Obvia decir que los programas no contienen nada, el antivirus puede detectar lo que sea pero vamos, por eso esta el código, el que quiera puede compilarlo. Si lo compilas y lo pruebas te pasará lo mismo y si miras el código verás que no hay nada raro en el

Y como es esperable he jugado limpio, en el que es precalcular solo imprime el tiempo de main de 216 ms aunque he dicho lo que ha tardado en ser compilado, en el otro incluye el tiempo de calcular e imprimir

No se trata de rozar pero calmate coño, no seas un caga prisas, es que no habían pasado ni 24 horas. Te dije que te iba a destrozar y por lo que pudiste leer era evidente que se más que tú con lo que era muy posible, yo te estaba dejando manga ancha, voy de farol :sisi3: pero eso, esto es para todos, tú y yo solo eramos dos participantes más y te dije que sin tiempos, lo podría entender si llevases esperando 2 o 3 semanas pero es que creo que no llega ni a 16 horas, tienes que relajarte un poco, tú puedes poner lo que sea y me lo tomo bien pero eso, chorradas, te puede el ansia y yo asi ni disfruto ni me lo paso bien

Macho, tienes que entenderlo, la inspiración divina llega cuando llega, a veces se hace de rogar, como eres hombre de poca fe pues no lo entiendes pero es asi, las cosas llevan su tiempo
 
El ejecutable es precisamente para eso, para que no tengas que compilar nada, se compilan con "cargo run --release", cuando tengas instalado Rust descomprimes el que quieras de los dos, entras y viendo el fichero .toml te vas a la barra del explorador y escribes "cnd" + intro y luego el cargo run --release

Una vez que los compile el ejecutable esta en target -> release (o debug si no has puesto lo de --release) -> Estará el ejecutable o libreria si es que lo es

Obvia decir que los programas no contienen nada, el antivirus puede detectar lo que sea pero vamos, por eso esta el código, el que quiera puede compilarlo. Si lo compilas y lo pruebas te pasará lo mismo y si miras el código verás que no hay nada raro en el

Y como es esperable he jugado limpio, en el que es precalcular solo imprime el tiempo de main de 216 ms aunque he dicho lo que ha tardado en ser compilado, en el otro incluye el tiempo de calcular e imprimir

No se trata de rozar pero calmate coño, no seas un caga prisas, es que no habían pasado ni 24 horas. Te dije que te iba a destrozar y por lo que pudiste leer era evidente que se más que tú con lo que era muy posible, yo te estaba dejando manga ancha, voy de farol :sisi3: pero eso, esto es para todos, tú y yo solo eramos dos participantes más y te dije que sin tiempos, lo podría entender si llevases esperando 2 o 3 semanas pero es que creo que no llega ni a 16 horas, tienes que relajarte un poco, tú puedes poner lo que sea y me lo tomo bien pero eso, chorradas, te puede el ansia y yo asi ni disfruto ni me lo paso bien

Macho, tienes que entenderlo, la inspiración divina llega cuando llega, a veces se hace de rogar, como eres hombre de poca fe pues no lo entiendes pero es asi, las cosas llevan su tiempo

y lo que me he reído qué
a?
yo sabía que iba a perder
pero y el bañito de humildad que te has llevado qué?
a?

hemos hecho un ejercicio de mierda que hacen los chavales en sus cursos cutres
lo hice ayer cuando terminé de currar, me fui a cagar y volví al foro para meterte prisa

y las risas que me he echado metiéndote prisa que?
a?

de todas formas no cantes victoria porque no son las 00.00
aún se puede presentar otro más rápido que tú
sostaría wuapo


si te has estresao no me es mi problema shur
no te lo tomes como algo personal
dw9brkg6_o.webp
 
y lo que me he reído qué
a?
yo sabía que iba a perder
pero y el bañito de humildad que te has llevado qué?
a?

hemos hecho un ejercicio de mierda que hacen los chavales en sus cursos cutres
lo hice ayer cuando terminé de currar, me fui a cagar y volví al foro para meterte prisa

y las risas que me he echado metiéndote prisa que?
a?

de todas formas no cantes victoria porque no son las 00.00
aún se puede presentar otro más rápido que tú
sostaría wuapo


si te has estresao no me es mi problema shur
no te lo tomes como algo personal
dw9brkg6_o.jpg

El concepto de diversión es distinto para cada indivuo, eso es cierto :mola:
 
Precisamente por eso no quería hacerlo, es que no han pasado ni 24 hora y ya con prisas

Hay gente que no vive por y para forear y a mi con la presión del reloj no me gusta hacer las cosas

Olvidate de mi, cuelga lo que sea a ver si está por debajo de 7 segundos que es la segunda más rápida :mola:

Shur ejque ya te digo , yo me paso por el foro de ciento en viento quitando los findes. Y no me da la vida a mi tampoco XD
 
Joder, hacía como 30 años que no programaba en BASIC... xDD

He usado PCBASIC (un intérprete-emulador de GWBasic) para redactar un pequeño programa que resuelve la cuestión. Funciona muy bien, pero que nadie me pida récords de procesamiento... xDDD

Por ejp.: Tarda 40 segundos en obtener todos los primos entre 1 y 10.000. Claro que rulando bajo un intérprete, que es una patata hecha a posta para trabajar a la velocidad de los viejos PCs de los 80...

10 CLS
20 PRINT "CALCULADORA DE NUMEROS PRIMOS"
30 PRINT "Calcula los números primos entre 1 y el número introducido"
40 PRINT
50 INPUT "Introduzca número: ",N
60 CLS
70 PRINT 2,
80 FOR A=3 TO N STEP 2
90 FOR H=2 TO INT(SQR(A))
100 IF A/H=INT(A/H) THEN 130
110 NEXT H
120 PRINT A,
130 NEXT A

Lo ideal sería compilarlo. Entonces volaría... Voy a ver si existe un compilador que rule bajo Windows, y si eso pruebo.

EDITO: Acabo de comprobar que el reto era los N primeros números primos, no los primos que hay en una secuencia de N números desde el 1...
Mañana lo cambio. Es fácil.
 
Última edición:
Joder, hacía como 30 años que no programaba en BASIC... xDD

He usado PCBASIC (un intérprete-emulador de GWBasic) para redactar un pequeño programa que resuelve la cuestión. Funciona muy bien, pero que nadie me pida récords de procesamiento... xDDD

Por ejp.: Tarda 40 segundos en obtener todos los primos entre 1 y 10.000. Claro que rulando bajo un intérprete, que es una patata hecha a posta para trabajar a la velocidad de los viejos PCs de los 80...

10 CLS
20 PRINT "CALCULADORA DE NUMEROS PRIMOS"
30 PRINT "Calcula los números primos entre 1 y el número introducido"
40 PRINT
50 INPUT "Introduzca número: ",N
60 CLS
70 PRINT 2,
80 FOR A=3 TO N STEP 2
90 FOR H=2 TO INT(SQR(A))
100 IF A/H=INT(A/H) THEN 130
110 NEXT H
120 PRINT A,
130 NEXT A

Lo ideal sería compilarlo. Entonces volaría... Voy a ver si existe un compilador que rule bajo Windows, y si eso pruebo.

EDITO: Acabo de comprobar que el reto era los N primeros números primos, no los primos que hay en una secuencia de N números desde el 1...
Mañana lo cambio. Es fácil.

Lo tienes bien, es lo que se pide, los primos que haya desde el 0 hasta N, es lo que se ha pedido

Más de uno con ese GOTO encubierto en la línea 10 se sacaría los ojos :qmeparto:

Que conste que lo he intentado con Vintage Basis pero claro, como no tengo ni idea me sale un error de fin de linea inesperado
 

El THEN es un GOTO encubierto, digamos que promueve el código spaguetti o lo que es lo mismo, ir saltando de un lado a otro sin control

Hay mucho purista que en cuento lo vea no querrá saber nada más y pedirá tú cabeza

Haces bien en no saberlo, significa que no te dejas amargar por el resto de nosotros, yo lo uso cuando hace falta pero trato de no hacerlo público porque ya se lo que va a pasar, yo lo he dicho como broma

Una buena sonrisa saber que no todo el mundo se deja manipular por el "estándar" del momento, en BASIC puro no tienes más opciones pero eso, aún asi habrá quien te diga de todo
 
Por curiosidad ¿El tiempo de ejecución cómo lo medís? ¿Cada uno con su máquina?
 
Última edición:
He probado con varios algoritmos
el que mejor resultado me ha dado ha sido con Eratóstenes

aquí la waina

Python:
import numpy as np
import math
from timeit import default_timer as timer

def sieve_of_eratosthenes(limit):
    sieve = np.ones(limit, dtype=bool)
    sieve[:2] = False   # 0 y 1 no son primos
    for num in range(2, int(math.sqrt(limit)) + 1):
        if sieve[num]:
            sieve[num*num::num] = False
    return np.nonzero(sieve)[0]

if __name__ == '__main__':
    LIMIT = 10_000_000

    # Medir el tiempo para calcular los números primos
    start_time_calc = timer()

    primes = sieve_of_eratosthenes(LIMIT)

    end_time_calc = timer()
    calc_execution_time = end_time_calc - start_time_calc

    # Medir el tiempo de impresión
    start_time_print = timer()

    print(f"Números primos entre 0 y {LIMIT}:")
    for prime in primes:
        print(prime)

    end_time_print = timer()
    total_execution_time = end_time_print - start_time_calc
    print_execution_time = end_time_print - start_time_print

    # Resultados
    print(f"Total de numeros primos encontrados: {len(primes)}")
    print(f"Tiempo para calcular los numeros primos: {calc_execution_time} segundos")
    print(f"Tiempo para imprimir los numeros primos: {print_execution_time} segundos")
    print(f"Tiempo total (calculo + impresion): {total_execution_time} segundos")


Total de numeros primos encontrados: 664579
Tiempo para calcular los numeros primos: 0.01990989997284487 segundos
Tiempo para imprimir los numeros primos: 6.470142100006342 segundos
Tiempo total (calculo + impresion): 6.490053399989847 segundos
Le he añadido una pequeña mejora a tu código y me da este resultado:

Total de números primos encontrados: 664579
Tiempo para calcular los números primos: 0.017976699999962875 segundos
Tiempo para imprimir los números primos: 2.1272690999999213 segundos
Tiempo total (calculo + impresión): 2.145247500000096 segundos

P.D.: Por cierto, enhorabuena @Jorge2019 buen código :)
 
Última edición:
Le he añadido una pequeña mejora a tu código y me da este resultado:

Total de números primos encontrados: 664579
Tiempo para calcular los números primos: 0.017976699999962875 segundos
Tiempo para imprimir los números primos: 2.1272690999999213 segundos
Tiempo total (calculo + impresión): 2.145247500000096 segundos

P.D.: Por cierto, enhorabuena @Jorge2019 buen código :)
le has bajado un guebazo de tiempo a la impresión
cómo lo has hecho shur?

gracias por la felisitasión

Por curiosidad ¿El tiempo de ejecución cómo lo medís? ¿Cada uno con su máquina?
no se han hecho comprobaciones debidamente
tampoco se han estipulado límites ni requerimientos

el reto es que no hay reto
:sisi1:
 
le has bajado un guebazo de tiempo a la impresión
cómo lo has hecho shur?

gracias por la felisitasión


no se han hecho comprobaciones debidamente
tampoco se han estipulado límites ni requerimientos

el reto es que no hay reto
:sisi1:
Perdona que no haya puesto el código. Quedaría así:
Python:
import numpy as np
from timeit import default_timer as timer

def sieve_of_eratosthenes(limit):
    sieve = np.ones(limit, dtype=bool)
    sieve[:2] = False   # 0 y 1 no son primos
    for num in range(2, int(np.sqrt(limit)) + 1):
        if sieve[num]:
            sieve[num*num::num] = False
    return np.nonzero(sieve)[0]

if __name__ == '__main__':
    LIMIT = 10_000_000

    # Medir el tiempo para calcular los números primos
    start_time_calc = timer()

    primes = sieve_of_eratosthenes(LIMIT)

    end_time_calc = timer()
    calc_execution_time = end_time_calc - start_time_calc

    # Medir el tiempo de impresión
    start_time_print = timer()

    print(f"Números primos entre 0 y {LIMIT}:")
    print(primes.tolist())

    end_time_print = timer()
    total_execution_time = end_time_print - start_time_calc
    print_execution_time = end_time_print - start_time_print

    # Resultados
    print(f"Total de números primos encontrados: {len(primes)}")
    print(f"Tiempo para calcular los números primos: {calc_execution_time} segundos")
    print(f"Tiempo para imprimir los números primos: {print_execution_time} segundos")
    print(f"Tiempo total (calculo + impresión): {total_execution_time} segundos")
He quitado el bucle que había para imprimir y lo he sustituido por el método tolist() que tienen las matrices de numpy quedando al final un sólo print(primes.tolist()). Además hago todo con numpy (incluyendo la operación de la raíz cuadrada) por lo que me ahorro importar la librería math que suele ser más pesada.
 
Perdona que no haya puesto el código. Quedaría así:
Python:
import numpy as np
from timeit import default_timer as timer

def sieve_of_eratosthenes(limit):
    sieve = np.ones(limit, dtype=bool)
    sieve[:2] = False   # 0 y 1 no son primos
    for num in range(2, int(np.sqrt(limit)) + 1):
        if sieve[num]:
            sieve[num*num::num] = False
    return np.nonzero(sieve)[0]

if __name__ == '__main__':
    LIMIT = 10_000_000

    # Medir el tiempo para calcular los números primos
    start_time_calc = timer()

    primes = sieve_of_eratosthenes(LIMIT)

    end_time_calc = timer()
    calc_execution_time = end_time_calc - start_time_calc

    # Medir el tiempo de impresión
    start_time_print = timer()

    print(f"Números primos entre 0 y {LIMIT}:")
    print(primes.tolist())

    end_time_print = timer()
    total_execution_time = end_time_print - start_time_calc
    print_execution_time = end_time_print - start_time_print

    # Resultados
    print(f"Total de números primos encontrados: {len(primes)}")
    print(f"Tiempo para calcular los números primos: {calc_execution_time} segundos")
    print(f"Tiempo para imprimir los números primos: {print_execution_time} segundos")
    print(f"Tiempo total (calculo + impresión): {total_execution_time} segundos")
He quitado el bucle que había para imprimir y lo he sustituido por el método tolist() que tienen las matrices de numpy quedando al final un sólo print(primes.tolist()). Además hago todo con numpy (incluyendo la operación de la raíz cuadrada) por lo que me ahorro importar la librería math que suele ser más pesada.
no sabía tal cosa
crees que se puede reducir el tiempo aún más?
tienes alguna idea loca?
 
Volver
Arriba