Pagina 1 di 2

Project Euler - Problem 12

Inviato: 23 giu 2009, 14:56
da Haile
Cos'è "Project Euler" in due parole:

http://projecteuler.net/index.php

Project Euler is a series of challenging mathematical/computer programming problems

Passando al problema #12:

What is the value of the first triangle number to have over five hundred divisors?

Qual è il primo numero triangolare con più di 500 divisori? (compresi l'1 e se stesso).

(premesso che lavoro in python) il mio tentativo di soluzione si basa semplicemente sulla definizione di una funzione div(n), che dato un intero n in input, dia in output il numero di suoi divisori: div(10) = 4.

Codice: Seleziona tutto

def div(n):
    ris = 1
    if n%2 == 0:
        for x in range(1, n/2+1):
            if n%x == 0:
                ris = ris + 1
        return ris
    else:
        for x in range(1, int(math.ceil(n/2))+1, 2):
           if n%x == 0:
                ris = ris + 1
        return ris

In pratica dato n, se n è pari controlla per tutti numeri $ $x$ $ da 1 a $ $ \frac{n}{2}$ $ se $ $ n \equiv 0 \pmod x $ $. Se sì, allora aumenta il counter del numero dei divisori di 1. Se n è dispari, controlla i numeri da 1 a $ $ \lceil \tfrac{n}{2} \rceil $ $ ma saltando tutti i pari (x = 1,3,5...)

Fatto questo, la mia idea prevedeva di far controllare al programma tutti i valori di div(n(n+1)/2) per n =1,2,3... fino a quando div >= 500.

Fatto sta che il mio PC impiega circa 6 minuti a trovare il primo numero triangolare con div() > 150... e il tentativo per div() > 300 l'ho stoppato dopo decine di minuti. Eppure:
an efficient implementation will allow a solution to be obtained on a modestly powered computer in less than one minute.
Qualche consiglio su come gestire diversamente il problema, o come migliorare la funzione div()?

Inviato: 23 giu 2009, 16:41
da carlop
Un paio di idee utili:

-se A divide N, allora anche N/A divide N (facendo attenzione al caso A=N/A)

-la funzione che conta i divisori è una funzione moltiplicativa, cioè se gcd(A,B)=1 allora div(A*B)=div(A)*div(B) (quale sarà la scelta conveniente di due fattori coprimi per un numero triangolare ?)


Credo che implementando una sola delle due idee (o anche entrambe) dovresti riuscire piuttosto in fretta (qualche secondo) a trovare la soluzione.

Inviato: 23 giu 2009, 18:12
da SkZ
ti consiglierei inoltre una "libreria" di numeri primi: i primi 10.000 sono facilmente reperibili ( http://primes.utm.edu/lists/ ) e velocizzi molto i conti assieme al secondo suggerimento di carlop

Inviato: 23 giu 2009, 18:14
da Haile
Ho implementato la seconda, che si è rivelata vincente... risultato trovato in 14.51 secondi 8) $ T_{12375} = 76576500 = 2^2 \cdot 3^2 \cdot 5^3 \cdot 7 \cdot 11 \cdot 13 \cdot 17 $ e con 576 divisori.

Grazie mille, peccato non esserci arrivato... sapevo della molteplicità della funzione ma stupidamente non ho pensato di sfruttarla :(

Inviato: 23 giu 2009, 19:07
da SkZ
si dovrebbe riuscire ad arrivarci anche a mano
il prodotto dei primi n numeri primi ha $ ~2^n $ divisori ergo servono 9 primi per 512
sostituendo $ ~2^5 $ a $ ~2\cdot 23 $ e $ ~3^3 $ a $ ~3\cdot 19 $
mi viene $ $73513440=2^5\cdot3^3\cdot5\cdot7\cdot11\cdot13\cdot17 $ con $ ~(5+1)(3+1)(1+1)(1+1)(1+1)(1+1)(1+1)=768 $ che minore del tuo :?

a conti fatti $ $2^3\cdot3^3\cdot5\cdot7\cdot11\cdot13\cdot17=18378360 $ con $ ~(3+1)(3+1)(1+1)(1+1)(1+1)(1+1)(1+1)=512 $ e' forse il piu' piccolo, ma forse si puo' fare di meglio

Inviato: 23 giu 2009, 20:08
da Haile
SkZ ha scritto:si dovrebbe riuscire ad arrivarci anche a mano
il prodotto dei primi n numeri primi ha $ ~2^n $ divisori ergo servono 9 primi per 512
sostituendo $ ~2^5 $ a $ ~2\cdot 23 $ e $ ~3^3 $ a $ ~3\cdot 19 $
mi viene $ $73513440=2^5\cdot3^3\cdot5\cdot7\cdot11\cdot13\cdot17 $ con $ ~(5+1)(3+1)(1+1)(1+1)(1+1)(1+1)(1+1)=768 $ che minore del tuo :?

a conti fatti $ $2^3\cdot3^3\cdot5\cdot7\cdot11\cdot13\cdot17=18378360 $ con $ ~(3+1)(3+1)(1+1)(1+1)(1+1)(1+1)(1+1)=512 $ e' forse il piu' piccolo, ma forse si puo' fare di meglio
A me non risulta che 73513440 e 18378360 siano numeri triangolari...

Inviato: 23 giu 2009, 20:18
da SkZ
neppure a me :D
:oops: ok, dimenticato una ipotesi

18378360 e' cmq il piu' piccolo con piu' di 500 divisori (forse) :wink:

Inviato: 23 giu 2009, 20:19
da Haile
SkZ ha scritto:neppure a me :D
:oops: ok, dimenticato una ipotesi
Beh, senza quell'ipotesi non ci sarebbe stato certo bisogno di scrivere un programma :lol:

Inviato: 23 giu 2009, 20:55
da dario2994
Scusate... ma secondo me qua l'algoritmo usato non è "molto ottimizzato"... io in javascript ho fatto un programma che trova tutto in 370ms... e si parla di js che è il linguaggio più lento in assoluto. Non è un post di vanto, è solo per consigliarvi di riguardare i vostri algoritmi... si può fare di molto meglio ;)
In ogni caso complimenti a chi ha risolto questo problema :)
Mi cimento anche io in quel progetto, sono curioso xD

Inviato: 23 giu 2009, 20:56
da SkZ
qual e' l'andamento del numero di divisori dei numeri triangolari?

Inviato: 23 giu 2009, 21:07
da dario2994
[2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 16, 8, 4, 8, 8, 4, 8, 16, 8, 4, 4, 8, 16, 8, 4, 8, 8, 4, 8, 24, 12, 8, 8, 8, 16, 8, 4, 12, 12, 4, 8, 16, 8, 8, 16, 24, 24, 8, 4, 8, 8, 4, 12, 36, 24, 16, 8, 8, 16, 8, 4, 12, 12, 4, 8, 16, 16, 16, 8, 16, 48, 12, 4, 16, 32, 8, 8, 24, 12, 8, 16, 16, 16, 8, 8, 32, 16, 4, 12, 24, 8, 8, 8, 12, 24, 8, 4, 16, 16, 8, 16, 32, 16, 8, 16, 16, 24, 12, 8, 24, 12, 4, 8, 16, 16, 24, 12, 16, 32, 16, 8, 16, 32, 8, 12, 36, 12, 8, 8, 8, 16, 8, 4, 16, 32, 8, 8, 16, 8, 8, 8, 12, 36, 24, 16, 32, 16, 4, 8, 40, 40, 24, 12, 8, 32, 16, 4, 24, 24, 8, 24, 24, 8, 8, 16, 32, 32, 8, 4, 16, 16, 8, 16, 24, 24, 16, 16, 16, 32, 32, 8, 20, 20, 4, 16, 32, 8, 12, 12, 12, 24, 8, 8, 32, 32, 8, 12, 48, 32, 16, 8, 8, 16, 8, 8, 48, 48, 8, 8, 32, 32, 16, 8, 20, 60, 12, 4, 16, 16, 8, 32, 48, 12, 12, 24, 16, 16, 16, 8, 16, 16, 4, 16, 32, 16, 16, 16, 24, 24, 16, 8, 24, 48, 8, 16, 80, 20, 8, 16, 32, 48, 12, 4, 24, 48, 16, 16, 16, 8, 12, 12, 16, 64, 16, 12, 48, 16, 4, 12, 36, 12, 8, 8, 8, 32, 16, 8, 40, 20, 8, 16, 16, 8, 8, 16, 24, 48, 16, 8, 32, 32, 8, 8, 32, 32, 24, 12, 16, 32, 16, 8, 24, 24, 4, 12, 24, 8, 8, 16, 48, 48, 16, 8, 24, 72, 12, 8, 24, 24, 32, 16, 8, 24, 12, 8, 64, 32, 4, 8, 32, 32, 24, 24, 24, 48, 16, 4, 16, 16, 8, 32, 80, 20, 8, 16, 16, 32, 16, 4, 24, 24, 4, 8, 32, 32, 16, 8, 16, 48, 24, 16, 32, 16, 8, 32, 48, 24, 32, 16, 16, 32, 8, 4, 24, 96, 16, 12, 24, 8, 16, 32, 24, 24, 8, 8, 48, 24, 4, 16, 64, 16, 8, 16, 16, 32, 32, 16, 48, 24, 8, 16, 16, 16, 24, 24, 40, 40, 16, 8, 16, 16, 4, 12, 36, 36, 24, 16, 16, 16, 16, 8, 32, 32, 8, 32, 32, 16, 16, 8, 24, 72, 24, 8, 16, 32, 8, 8, 48, 24, 12, 24, 16, 16, 8, 16, 96, 24, 4, 16, 64, 16, 16, 16, 16, 64, 16, 4, 24, 48, 16, 16, 24, 24, 16, 24, 48, 48, 12, 4, 20, 40, 8, 16, 32, 16, 32, 16, 12, 24, 16, 8, 16, 32, 16, 48, 96, 32, 16, 8, 16, 32, 8, 4, 36, 72, 16, 16, 16, 8, 16, 32, 48, 96, 16, 8, 32, 32, 16, 16, 48, 24, 12, 12, 8, 32, 16, 8, 64, 32, 8, 24, 48, 32, 16, 16, 24, 24, 8, 12, 72, 24, 4, 8, 40, 40, 32, 16, 8, 24, 36, 24, 48, 48, 8, 16, 32, 8, 12, 24, 32, 64, 16, 4, 16, 32, 8, 20, 60, 12, 16, 16, 8, 16, 16, 24, 72, 24, 4, 8, 32, 32, 16, 16, 24, 72, 24, 4, 16, 32, 16, 16, 32, 16, 16, 64, 32, 16, 16, 8, 24, 24, 8, 24, 24, 16, 16, 8, 20, 80, 32, 16, 48, 24, 4, 16, 96, 24, 8, 8, 16, 64, 16, 8, 64, 96, 12, 16, 32, 16, 24, 12, 12, 24, 8, 8, 32, 48, 24, 24, 84, 28, 8, 8, 16, 64, 16, 4, 36, 72, 24, 48, 32, 8, 8, 16, 32, 48, 24, 8, 32, 32, 4, 16, 48, 48, 48, 24, 16, 16, 16, 16, 80, 40, 4, 16, 32, 8, 8, 16, 48, 48, 16, 8, 24, 48, 16, 16, 32, 32, 32, 16, 8, 48, 24, 8, 48, 48, 8, 8, 32, 16, 16, 32, 48, 96, 16, 8, 32, 16, 8, 24, 36, 24, 32, 32, 16, 16, 8, 4, 32, 64, 8, 8, 16, 24, 24, 8, 24, 120, 40, 16, 32, 16, 4, 16, 80, 40, 24, 12, 16, 64, 32, 8, 24, 48, 8, 12, 48, 32, 32, 16, 16, 32, 16, 16, 64, 32, 4, 16, 96, 24, 8, 16, 16, 48, 24, 8, 56, 28, 16, 32, 16, 8, 12, 36, 36, 48, 16, 8, 64, 64, 16, 32, 64, 32, 16, 8, 8, 16, 16, 16, 72, 72, 8, 16, 32, 8, 16, 32, 40, 60, 12, 8, 32, 64, 32, 16, 24, 12, 16, 16, 16, 32, 16, 16, 64, 64, 8, 24, 96, 16, 8, 8, 12, 72, 48, 8, 24, 24, 8, 16, 48, 72, 24, 16, 32, 64, 16, 4, 24, 24, 4, 8, 16, 16, 24, 24, 32, 32, 24, 24, 32, 16, 8, 48, 72, 12, 8, 8, 16, 64, 16, 4, 40, 80, 8, 8, 32, 32, 32, 32, 24, 36, 24, 24, 48, 16, 4, 8, 64, 32, 12, 12, 16, 64, 16, 4, 24, 48, 16, 40, 40, 16, 16, 16, 56, 112, 16, 4, 24, 48, 16, 32, 48, 24, 16, 8, 8, 24, 48, 16, 32, 64, 8, 16, 32, 16, 32, 16, 24, 48, 8, 8, 64, 96, 12, 12, 60, 20, 16, 48, 24, 16, 8, 16, 144, 36, 8, 16, 32, 16, 8, 16, 32, 64, 32, 8, 16, 32, 24, 24, 48, 24, 12, 24, 16, 32, 16, 8, 48, 24, 8, 24, 24, 16, 32, 16, 12, 24, 16, 8, 32, 64, 8, 24, 96, 16, 8, 16, 32, 48, 12, 4, 24, 48, 16, 32, 64, 32, 48, 24, 20, 40, 16, 16, 32, 16, 4, 16, 96, 48, 16, 16, 16, 32, 16, 8, 96, 48, 8, 16, 32, 16, 8, 32, 48, 36, 12, 4, 32, 32, 8, 32, 112, 84, 48, 32, 16, 32, 32, 8, 24, 24, 8, 48, 96, 32, 16, 8, 32, 64, 8, 8, 48, 96, 16, 8, 24, 12, 16, 16, 8, 40, 40, 16, 80, 80, 8, 8, 32, 16, 12, 12, 24, 96, 32, 16, 32, 16, 8, 48, 96, 32, 16, 24, 24, 16, 24, 24, 72, 72, 8, 8, 16, 32, 32, 8, 24, 72, 24, 8, 32, 32, 4, 16, 48, 12, 12, 24, 48, 48, 16, 8, 32, 128, 32, 32, 32, 8, 16, 32, 24, 48, 16, 8, 48, 24, 8, 16, 40, 40, 32, 16, 8, 48, 24, 12, 72, 24, 8, 32, 32, 16, 40, 40, 32, 32, 8, 8, 64, 64, 8, 12, 36, 24, 16, 16, 32, 32, 24, 12, 28, 28, 4, 32, 64, 16, 16, 16, 48, 96, 32, 8, 16, 32, 16, 16, 32, 32, 48, 24, 8, 32, 16, 12, 72, 48, 16, 24, 48, 16, 8, 16, 40, 80, 16, 4, 32, 64, 32, 32, 24, 12, 8, 16, 32, 96, 24, 8, 64, 32, 4, 8, 32, 32, 24, 24, 24, 48, 32, 16, 32, 16, 4, 20, 120, 24, 16, 32, 32, 64, 32, 8, 36, 108, 12, 8, 16, 8, 16, 16, 32, 96, 12, 16, 64, 16, 4, 16, 96, 48, 32, 32, 16, 32, 32, 16, 80, 40, 12, 36, 24, 16, 32, 32, 24, 24, 16, 8, 24, 48, 8, 8, 32, 64, 32, 16, 16, 32, 32, 16, 48, 48, 24, 72, 96, 16, 12, 12, 32, 128, 16, 4, 16, 32, 8, 12, 72, 24, 16, 16, 8, 16, 8, 16, 192, 48, 8, 16, 48, 24, 16, 16, 12, 72, 24, 4, 16, 64, 32, 32, 80, 40, 24, 24, 32, 32, 8, 4, 48, 48, 4, 16, 32, 24, 48, 16, 16, 32, 32, 32, 48, 48, 16, 32, 48, 24, 16, 16, 32, 48, 24, 16, 96, 96, 8, 8, 16, 16, 32, 32, 24, 48, 16, 8, 32, 32, 16, 24, 96, 32, 8, 16, 32, 128, 32, 4, 36, 36, 8, 16, 32, 16, 8, 32, 80, 100, 40, 16, 64, 32, 4, 8, 24, 24, 48, 48, 16, 16, 16, 16, 64, 64, 16, 48, 48, 16, 16, 8, 24, 48, 8, 8, 64, 64, 16, 32, 112, 28, 16, 32, 16, 24, 24, 16, 48, 48, 8, 16, 64, 48, 36, 12, 16, 96, 48, 8, 32, 32, 8, 32, 48, 12, 8, 32, 32, 16, 8, 4, 40, 80, 16, 32, 32, 16, 16, 8, 12, 72, 72, 12, 16, 16, 4, 16, 128, 64, 40, 20, 16, 32, 16, 32, 96, 48, 8, 12, 24, 16, 32, 16, 24, 48, 16, 24, 72, 48, 8, 16, 96, 24, 16, 16, 16, 128, 32, 4, 32, 32, 8, 32, 32, 8, 12, 48, 96, 48, 16, 8, 32, 64, 8, 12, 60, 80, 32, 16, 32, 32, 16, 8, 48, 96, 8, 16, 32, 16, 32, 48, 96, 96, 12, 4, 16, 48, 24, 16, 24, 24, 48, 24, 8, 32, 32, 16, 64, 64, 8, 20, 160, 64, 16, 8, 12, 48, 16, 16, 96, 24, 12, 48, 64, 16, 16, 32, 16, 24, 24, 8, 48, 96, 16, 16, 32, 32, 32, 16, 20, 40, 16, 8, 16, 32, 8, 24, 72, 24, 16, 8, 16, 64, 32, 8, 48, 96, 16, 16, 16, 16, 32, 32, 24, 48, 16, 16, 128, 32, 8, 32, 96, 24, 12, 24, 16, 32, 32, 8, 24, 24, 16, 48, 48, 16, 8, 16, 32, 96, 24, 4, 32, 32, 4, 8, 48, 96, 32, 8, 16, 48, 24, 16, 80, 80, 16, 32, 32, 8, 24, 48, 48, 48, 8, 8, 32, 64, 16, 16, 64, 32, 48, 48, 32, 64, 16, 8, 72, 36, 4, 16, 64, 32, 16, 8, 28, 168, 72, 12, 16, 16, 8, 16, 48, 48, 32, 48, 24, 32, 16, 8, 64, 32, 4, 24, 48, 16, 16, 16, 24, 24, 16, 16, 48, 24, 8, 32, 80, 20, 8, 8, 24, 144, 48, 16, 48, 96, 16, 8, 32, 16, 24, 48, 32, 32, 8, 16, 64, 32, 8, 12, 72, 24, 16, 16, 8, 48, 24, 8, 96, 192, 32, 16, 16, 8, 8, 16, 48, 72, 24, 16, 64, 32, 8, 32, 64, 32, 24, 12, 16, 64, 48, 24, 48, 24, 4, 32, 64, 16, 16, 8, 40, 80, 8, 4, 24, 48, 8, 16, 96, 48, 32, 64, 32, 24, 12, 12, 96, 32, 8, 16, 32, 32, 40, 20, 12, 96, 64, 8, 16, 16, 8, 24, 96, 64, 32, 32, 16, 16, 8, 8, 72, 36, 8, 16, 32, 32, 32, 32, 32, 64, 32, 8, 16, 48, 12, 16, 48, 24, 24, 24, 64, 64, 8, 4, 40, 120, 24, 48, 48, 16, 32, 16, 12, 48, 32, 16, 64, 64, 8, 8, 64, 64, 16, 16, 16, 48, 48, 8, 48, 48, 12, 24, 16, 16, 24, 48, 96, 48, 8, 8, 64, 32, 12, 60, 60, 24, 16, 8, 8, 32, 64, 16, 48, 48, 4, 24, 96, 16, 8, 8, 24, 144, 24, 8, 32, 64, 32, 32, 80, 20, 16, 32, 32, 32, 8, 8, 48, 48, 16, 24, 72, 24, 8, 16, 64, 128, 16, 4, 24, 48, 16, 48, 72, 12, 16, 32, 16, 32, 32, 16, 56, 56, 8, 8, 32, 96, 72, 24, 24, 24, 16, 8, 32, 32, 4, 24, 96, 32, 16, 16, 32, 32, 8, 8, 96, 96, 16, 32, 32, 8, 24, 24, 20, 120, 24, 16, 64, 32, 16, 16, 48, 48, 24, 24, 16, 32, 16, 8, 64, 64, 16, 32, 64, 16, 16, 48, 72, 48, 16, 8, 48, 96, 8, 8, 48, 48, 16, 8, 16, 96, 48, 16, 48, 24, 4, 32, 64, 8, 16, 16, 32, 128, 32, 8, 16, 32, 16, 24, 36, 36, 48, 16, 8, 32, 32, 32, 240, 60, 4, 8, 32, 32, 16, 16, 48, 120, 20, 4, 16, 16, 16, 32, 32, 32, 24, 48, 32, 32, 16, 4, 48, 96, 8, 12, 48, 32, 32, 32, 64, 64, 24, 24, 64, 32, 8, 32, 48, 36, 48, 32, 32, 48, 12, 4, 32, 128, 16, 16, 64, 16, 24, 48, 48, 48, 16, 24, 48, 32, 8, 32, 320, 40, 8, 8, 8, 32, 32, 8, 36, 36, 16, 64, 32, 32, 32, 16, 32, 48, 12, 4, 32, 64, 8, 8, 24, 24, 40, 60, 48, 64, 32, 8, 48, 48, 8, 48, 48, 16, 16, 16, 48, 96, 16, 8, 48, 96, 16, 8, 64, 32, 16, 16, 16, 64, 32, 32, 96, 24, 4, 16, 64, 16, 24, 24, 20, 80, 32, 16, 32, 32, 24, 36, 36, 12, 8, 16, 48, 48, 16, 16, 96, 48, 8, 32, 32, 16, 16, 16, 24, 36, 48, 32, 32, 32, 8, 24, 168, 56, 24, 12, 16, 32, 8, 8, 96, 192, 16, 24, 48, 16, 32, 32, 32, 64, 16, 8, 48, 48, 16, 16, 72, 72, 16, 8, 16, 96, 24, 4, 40, 40, 16, 64, 64, 16, 16, 32, 24, 24, 8, 8, 64, 32, 8, 48, 96, 48, 48, 32, 16, 16, 16, 16, 72, 144, 16, 16, 64, 16, 8, 8, 24, 96, 32, 8, 32, 64, 8, 16, 48, 24, 48, 24, 8, 16, 24, 48, 128, 64, 8, 12, 48, 32, 32, 32, 24, 48, 32, 8, 40, 40, 8, 16, 40, 20, 8, 48, 48, 48, 48, 16, 96, 48, 8, 16, 16, 16, 24, 12, 16, 64, 32, 16, 32, 16, 8, 64, 192, 24, 8, 24, 72, 96, 16, 12, 96, 64, 8, 8, 16, 8, 32, 32, 12, 36, 24, 16, 32, 32, 16, 16, 64, 64, 32, 32, 32, 96, 24, 8, 48, 48, 16, 48, 96, 16, 8, 16, 40, 80, 32, 8, 48, 48, 4, 16, 48, 48, 64, 16, 8, 40, 60, 12, 32, 64, 16, 32, 64, 16, 12, 24, 48, 48, 8, 8, 32, 64, 32, 24, 72, 48, 32, 16, 8, 32, 16, 16, 192, 48, 8, 32, 128, 32, 8, 8, 16, 96, 24, 16, 64, 16, 8, 16, 48, 24, 24, 48, 16, 32, 32, 8, 40, 120, 12, 16, 32, 32, 32, 16, 48, 96, 32, 8, 24, 48, 16, 64, 128, 16, 16, 32, 32, 48, 24, 8, 24, 72, 12, 8, 16, 16, 40, 80, 112, 56, 8, 8, 64, 32, 8, 24, 72, 24, 16, 32, 32, 64, 16, 4, 48, 96, 24, 48, 32, 16, 16, 16, 24, 96, 32, 4, 32, 64, 8, 8, 80, 160, 48, 12, 8, 16, 32, 32, 48, 24, 4, 36, 72, 8, 16, 32, 64, 64, 16, 16, 64, 128, 32, 16, 24, 24, 32, 32, 32, 48, 24, 16, 96, 96, 8, 24, 144, 48, 24, 12, 12, 48, 32, 16, 64, 64, 16, 40, 80, 32, 16, 16, 32, 32, 8, 8, 72, 36, 8, 16, 16, 24, 24, 16, 40, 60, 48, 16, 16, 32, 16, 32, 48, 24, 32, 16, 16, 64, 32, 8, 32, 64, 16, 24, 72, 24, 24, 24, 24, 96, 16, 16, 96, 24, 4, 8, 72, 72, 32, 32, 16, 64, 32, 8, 48, 48, 16, 16, 16, 16, 24, 36, 96, 64, 8, 4, 32, 64, 8, 24, 72, 48, 32, 16, 16, 16, 32, 16, 60, 60, 4, 16, 64, 48, 24, 16, 72, 108, 12, 8, 64, 64, 8, 16, 64, 16, 24, 48, 16, 32, 16, 8, 48, 24, 16, 64, 64, 16, 16, 32, 48, 144, 48, 16, 48, 48, 16, 16, 48, 24, 8, 32, 32, 24, 12, 16, 256, 128, 8, 8, 16, 16, 32, 16, 12, 24, 24, 24, 64, 64, 8, 24, 120, 20, 8, 8, 32, 64, 16, 8, 36, 144, 32, 32, 64, 32, 32, 16, 16, 96, 48, 24, 48, 16, 8, 32, 96, 48, 24, 12, 16, 64, 32, 8, 56, 56, 8, 48, 48, 8, 8, 48, 72, 24, 16, 8, 32, 64, 16, 32, 64, 32, 32, 16, 8, 48, 48, 8, 24, 24, 8, 32, 64, 64, 48, 12, 40, 80, 8, 8, 32, 48, 24, 32, 96, 24, 32, 32, 8, 16, 8, 8, 96, 192, 16, 16, 64, 16, 8, 16, 48, 144, 24, 8, 32, 16, 16, 64, 96, 24, 20, 80, 64, 32, 16, 16, 96, 96, 8, 12, 24, 32, 32, 8, 16, 64, 32, 16, 96, 96, 16, 48, 72, 12, 8, 16, 32, 64, 32, 24, 120, 80, 16, 16, 32, 16, 24, 24, 12, 72, 48, 32, 64, 16, 4, 12, 96, 32, 8, 8, 8, 64, 64, 16, 96, 48, 8, 16, 32, 32, 32, 32, 64, 96, 12, 4, 32, 128, 32, 16, 24, 36, 36, 24, 32, 64, 32, 16, 64, 32, 8, 40, 40, 8, 16, 32, 48, 48, 24, 12, 24, 48, 8, 16, 80, 80, 96, 24, 16, 48, 12, 8, 96, 48, 4, 8, 32, 16, 16, 32, 32, 64, 16, 8, 32, 32, 32, 96, 72, 36, 24, 32, 32, 32, 16, 4, 48, 96, 16, 16, 32, 32, 32, 16, 12, 48, 32, 24, 48, 32, 8, 16, 64, 16, 24, 48, 48, 48, 8, 4, 24, 96, 16, 12, 24, 8, 16, 32, 80, 80, 16, 32, 160, 40, 4, 16, 96, 48, 16, 16, 32, 144, 144, 16, 32, 64, 16, 16, 16, 16, 24, 24, 24, 48, 32, 8, 32, 64, 8, 16, 112, 112, 32, 16, 32, 32, 24, 24, 72, 36, 8, 32, 32, 8, 16, 32, 64, 192, 24, 4, 32, 64, 8, 16, 96, 24, 32, 32, 8, 16, 8, 24, 240, 80, 8, 12, 48, 32, 32, 32, 24, 48, 16, 8, 48, 72, 48, 32, 64, 64, 16, 16, 32, 80, 20, 4, 48, 48, 8, 32, 32, 16, 24, 24, 48, 96, 64, 16, 16, 32, 16, 48, 144, 48, 16, 8, 16, 64, 16, 4, 64, 192, 24, 16, 16, 16, 32, 32, 24, 36, 24, 16, 64, 32, 12, 24, 80, 40, 12, 24, 16, 64, 32, 8, 48, 24, 12, 48, 64, 32, 16, 32, 64, 32, 16, 32, 192, 48, 4, 8, 24, 24, 32, 16, 16, 96, 48, 16, 72, 72, 16, 48, 48, 16, 40, 20, 48, 192, 32, 8, 16, 32, 8, 24, 96, 16, 16, 32, 16, 16, 32, 32, 72, 72, 8, 8, 48, 48, 32, 32, 40, 160, 32, 8, 64, 32, 8, 32, 48, 24, 24, 48, 64, 32, 8, 4, 64, 64, 8, 24, 48, 64, 32, 16, 48, 96, 32, 16, 64, 64, 8, 32, 192, 24, 8, 16, 32, 48, 12, 8, 48, 96, 32, 16, 16, 16, 48, 48, 32, 32, 16, 16, 32, 64, 16, 24, 144, 48, 32, 16, 16, 64, 16, 4, 60, 60, 8, 32, 64, 32, 16, 24, 36, 36, 24, 16, 64, 32, 8, 16, 32, 96, 96, 16, 8, 16, 32, 16, 48, 96, 8, 24, 96, 32, 32, 32, 56, 112, 16, 4, 24, 48, 16, 16, 24, 12, 16, 48, 48, 128, 32, 8, 64, 32, 4, 16, 128, 32, 12, 24, 48, 144, 24, 8, 32, 16, 8, 24, 60, 40, 48, 48, 16, 32, 16, 8, 96, 96, 8, 16, 32, 32, 32, 16, 64, 96, 48, 16, 16, 16, 4, 32, 192, 24, 12, 12, 16, 32, 16, 16, 96, 96, 16, 32, 64, 32, 32, 16, 12, 24, 8, 12, 144, 96, 16, 16, 64, 64, 16, 24, 24, 48, 48, 16, 48, 96, 64, 32, 16, 16, 32, 32, 40, 80, 32, 8, 48, 48, 8, 24, 72, 48, 32, 16, 8, 16, 16, 32, 192, 48, 4, 32, 64, 16, 32, 16, 24, 120, 40, 8, 16, 96, 24, 8, 64, 32, 24, 24, 24, 96, 16, 16, 96, 48, 8, 24, 96, 32, 16, 8, 32, 128, 32, 8, 32, 64, 24, 24, 24, 24, 32, 64, 32, 24, 24, 8, 40, 40, 4, 16, 32, 16, 48, 96, 48, 24, 16, 8, 16, 16, 8, 64, 128, 32, 16, 16, 32, 96, 48, 16, 72, 72, 8, 8, 32, 16, 16, 16, 24, 144, 24, 16, 64, 32, 8, 16, 144, 72, 48, 48, 32, 64, 32, 8, 32, 64, 32, 48, 24, 8, 8, 16, 48, 96, 16, 8, 96, 96, 16, 32, 80, 60, 24, 16, 16, 32, 64, 32, 48, 24, 8, 32, 32, 16, 24, 24, 64, 128, 16, 8, 64, 128, 16, 12, 36, 12, 24, 96, 32, 16, 16, 16, 112, 56, 16, 32, 32, 16, 8, 8, 12, 144, 48, 4, 16, 16, 8, 32, 128, 64, 24, 36, 48, 64, 32, 24, 144, 48, 4, 20, 80, 64, 64, 32, 40, 40, 16, 8, 24, 48, 8, 16, 96, 48, 32, 16, 24, 72, 24, 16, 64, 64, 8, 16, 32, 24, 96, 32, 12, 24, 16, 32, 64, 16, 4, 24, 288, 96, 16, 16, 16, 48, 24, 4, 36, 36, 8, 32, 32, 8, 16, 64, 128, 128, 32, 8, 32, 32, 16, 32, 24, 24, 24, 12, 8, 32, 48, 24, 80, 80, 8, 24, 96, 16, 8, 8, 24, 48, 16, 16, 80, 160, 16, 16, 64, 32, 64, 32, 16, 48, 12, 12, 72, 72, 12, 8, 32, 16, 12, 12, 36, 144, 32, 16, 64, 64, 16, 64, 96, 12, 8, 16, 16, 32, 32, 8, 48, 96, 8, 8, 32, 64, 32, 8, 24, 72, 24, 16, 64, 32, 8, 32, 80, 20, 16, 64, 64, 64, 16, 4, 24, 96, 48, 72, 48, 16, 32, 16, 16, 64, 32, 16, 48, 24, 8, 16, 96, 96, 16, 8, 8, 48, 24, 8, 96, 96, 24, 24, 32, 32, 48, 96, 48, 48, 32, 8, 32, 64, 8, 24, 96, 32, 32, 32, 32, 32, 16, 8, 48, 48, 8, 48, 48, 8, 8, 16, 80, 120, 24, 16, 32, 64, 32, 16, 24, 48, 96, 24, 16, 32, 8, 8, 128, 64, 4, 16, 96, 24, 8, 16, 24, 96, 64, 16, 48, 24, 16, 32, 56, 56, 16, 16, 16, 48, 48, 8, 48, 48, 4, 16, 96, 72, 60, 20, 16, 64, 32, 32, 64, 16, 4, 24, 72, 24, 32, 16, 32, 128, 16, 8, 120, 240, 16, 8, 16, 16, 48, 72, 72, 96, 16, 8, 32, 32, 8, 16, 128, 32, 24, 48, 16, 32, 32, 8, 24, 24, 16, 48, 48, 64, 64, 48, 72, 48, 8, 4, 32, 64, 16, 32, 96, 48, 16, 16, 16, 24, 24, 16, 64, 32, 8, 64, 128, 16, 12, 24, 72, 144, 16, 4, 16, 32, 16, 40, 200, 80, 32, 32, 16, 32, 16, 16, 144, 72, 16, 32, 64, 16, 24, 24, 16, 144, 36, 8, 64, 64, 16, 16, 24, 12, 16, 64, 64, 32, 16, 16, 64, 64, 16, 48, 48, 16, 16, 8, 24, 48, 48, 24, 24, 24, 8, 32, 64, 64, 32, 16, 32, 64, 16, 4, 48, 96, 8, 8, 16, 16, 48, 72, 60, 40, 16, 32, 64, 16, 8, 24, 72, 24, 8, 16, 16, 64, 64, 24, 192, 64, 8, 16, 32, 32, 32, 64, 48, 36, 12, 8, 96, 96, 8, 8, 48, 96, 96, 24, 8, 16, 32, 16, 24, 96, 32, 64, 128, 16, 8, 8, 32, 64, 16, 8, 24, 72, 24, 64, 96, 12, 16, 16, 8, 48, 48, 16, 80, 80, 16, 32, 64, 32, 32, 16, 24, 96, 16, 4, 32, 64, 24, 36, 96, 64, 16, 32, 64, 32, 8, 8, 144, 144, 16, 16, 16, 32, 32, 8, 28, 140, 40, 16, 32, 32, 8, 24, 144, 48, 48, 48, 32, 32, 16, 16, 64, 64, 8, 12, 24, 8, 32, 64, 24, 48, 16, 16, 128, 64, 8, 16, 160, 40, 16, 16, 16, 96, 24, 4, 24, 48, 16, 32, 64, 16, 12, 48, 64, 64, 48, 12, 32, 32, 4, 16, 48, 72, 96, 16, 16, 64, 64, 32, 144, 144, 8, 16, 32, 16, 16, 16, 48, 72, 24, 16, 32, 32, 16, 32, 128, 32, 20, 20, 8, 32, 16, 8, 48, 24, 4, 24, 192, 64, 16, 16, 40, 80, 32, 24, 72, 48, 32, 64, 48, 12, 16, 48, 24, 32, 16, 4, 64, 256, 32, 16, 16, 32, 48, 24, 48, 96, 32, 8, 32, 32, 8, 96, 432, 72, 16, 8, 24, 48, 16, 16, 96, 96, 8, 8, 32, 32, 32, 16, 16, 48, 36, 24, 64, 64, 16, 16, 48, 48, 24, 48, 32, 64, 32, 4, 40, 40, 16, 96, 48, 8, 16, 32, 48, 96, 16, 4, 48, 96, 16, 16, 64, 64, 16, 32, 64, 48, 36, 24, 48, 24, 8, 32, 32, 8, 32, 32, 48, 192, 16, 8, 32, 96, 24, 12, 36, 24, 32, 32, 32, 64, 16, 12, 144, 48, 4, 16, 128, 64, 32, 32, 24, 96, 128, 32, 32, 32, 16, 32, 80, 40, 24, 24, 16, 16, 8, 8, 96, 48, 8, 24, 24, 16, 16, 16, 32, 64, 32, 8, 40, 80, 24, 48, 96, 24, 16, 16, 16, 96, 24, 8, 112, 168, 12, 8, 32, 16, 24, 24, 12, 48, 32, 32, 64, 32, 16, 32, 128, 32, 16, 16, 8, 32, 32, 16, 72, 72, 32, 64, 32, 8, 8, 32, 160, 240, 24, 4, 32, 32, 4, 24, 144, 48, 32, 32, 32, 32, 32, 16, 32, 32, 4, 36, 72, 32, 64, 32, 48, 48, 8, 4, 48, 96, 8, 8, 48, 24, 16, 32, 32, 80, 40, 16, 48, 24, 8, 16, 48, 96, 48, 24, 32, 128, 32, 8, 32, 32, 16, 24, 108, 72, 16, 16, 32, 32, 16, 16, 120, 120, 8, 16, 64, 48, 48, 16, 12, 72, 48, 16, 32, 32, 16, 32, 64, 16, 12, 12, 32, 64, 16, 16, 48, 96, 32, 64, 64, 8, 24, 48, 64, 64, 16, 32, 96, 24, 4, 8, 48, 72, 24, 8, 8, 48, 48, 16, 128, 128, 32, 64, 32, 8, 24, 96, 48, 24, 16, 16, 64, 64, 16, 24, 60, 40, 32, 32, 16, 64, 64, 8, 36, 72, 16, 32, 64, 16, 8, 16, 96, 192, 32, 32, 64, 32, 8, 16, 96, 24, 24, 48, 16, 16, 8, 8, 96, 96, 8, 12, 96, 32, 16, 16, 24, 144, 24, 8, 64, 64, 16, 32, 64, 64, 32, 16, 16, 48, 48, 16, 96, 48, 4, 8, 32, 64, 96, 24, 20, 40, 24, 12, 32, 64, 16, 80, 120, 12, 8, 32, 64, 32, 16, 8, 48, 192, 64, 32, 16, 16, 32, 32, 48, 144, 24, 12, 48, 48, 12, 8, 56, 28, 16, 16, 16, 128, 32, 8, 96, 48, 8, 24, 24, 8, 16, 32, 32, 32, 16, 16, 96, 96, 8, 16, 48, 48, 32, 8, 24, 96, 64, 32, 80, 40, 8, 64, 64, 8, 12, 12, 24, 96, 32, 8, 32, 96, 24, 24, 48, 32, 32, 32, 32, 32, 8, 8, 120, 120, 8, 16, 64, 32, 16, 32, 96, 144, 24, 4, 16, 16, 24, 96, 48, 24, 48, 48, 32, 96, 48, 16, 128, 64, 4, 16, 64, 64, 32, 8, 12, 24, 16, 16, 48, 48, 8, 24, 120, 40, 32, 32, 32, 48, 24, 8, 24, 96, 16, 16, 64, 32, 64, 32, 32, 64, 8, 8, 32, 16, 12, 72, 216, 72, 32, 16, 8, 32, 48, 24, 72, 72, 16, 32, 32, 16, 16, 32, 48, 72, 24, 8, 128, 64, 4, 16, 64, 64, 48, 24, 32, 32, 16, 16, 48, 48, 16, 48, 96, 16, 8, 8, 40, 320, 64, 8, 32, 64, 16, 16, 48, 24, 24, 24, 8, 48, 48, 48, 192, 32, 8, 16, 32, 32, 48, 24, 24, 96, 16, 8, 32, 64, 32, 32, 96, 24, 16, 96, 96, 32, 8, 4, 72, 144, 8, 16, 32, 16, 32, 32, 32, 48, 48, 16, 32, 64, 8, 16, 48, 48, 80, 40, 48, 48, 8, 4, 40, 80, 16, 24, 48, 32, 32, 32, 48, 48, 8, 16, 96, 48, 16, 32, 128, 32, 8, 8, 8, 64, 64, 16, 48, 24, 16, 64, 64, 16, 12, 24, 56, 56, 16, 16, 64, 64, 8, 24, 72, 48, 64, 32, 16, 16, 32, 16, 64, 192, 12, 16, 64, 32, 32, 16, 48, 144, 12, 8, 32, 32, 8, 16, 80, 40, 48, 48, 16, 32, 64, 48, 72, 48, 8, 20, 80, 32, 16, 8, 32, 256, 32, 4, 48, 48, 8, 16, 24, 12, 16, 64, 64, 96, 24, 4, 48, 48, 12, 24, 16, 16, 32, 64, 48, 48, 64, 32, 32, 16, 8, 48, 192, 32, 16, 32, 32, 32, 8, 16, 144, 108, 24, 16, 32, 32, 64, 32, 20, 80, 16, 8, 64, 64, 16, 16, 48, 48, 24, 24, 32, 64, 16, 8, 64, 64, 24, 108, 72, 16, 16, 16, 24, 24, 16, 16, 80, 40, 16, 32, 64, 128, 32, 16, 16, 24, 24, 8, 48, 96, 8, 32, 128, 16, 12, 48, 128, 64, 8, 8, 64, 64, 16, 32, 96, 24, 16, 32, 16, 32, 16, 16, 240, 120, 16, 32, 96, 72, 48, 16, 12, 72, 48, 16, 32, 16, 8, 16, 32, 32, 64, 64, 16, 32, 16, 4, 48, 192, 32, 24, 24, 24, 24, 16, 96, 192, 64, 16, 24, 24, 4, 32, 96, 12, 8, 16, 64, 160, 40, 8, 32, 128, 16, 16, 32, 24, 108, 36, 12, 48, 16, 8, 64, 32, 8, 48, 240, 120, 24, 16, 32, 64, 32, 8, 48, 48, 16, 32, 32, 16, 8, 24, 48, 96, 48, 16, 64, 64, 16, 32, 96, 48, 24, 12, 16, 32, 16, 32, 224, 56, 8, 64, 64, 16, 48, 24, 36, 72, 16, 8, 24, 96, 16, 8, 32, 16, 16, 16, 16, 48, 24, 32, 192, 96, 16, 32, 64, 16, 20, 20, 20, 120, 48, 16, 32, 32, 16, 48, 144, 48, 16, 32, 32, 32, 32, 8, 48, 48, 4, 8, 32, 32, 16, 24, 36, 96, 96, 12, 16, 32, 16, 32, 96, 48, 24, 12, 32, 128, 16, 8, 48, 48, 16, 24, 48, 32, 32, 32, 32, 64, 32, 48, 192, 32, 4, 8, 48, 24, 16, 64, 64, 96, 24, 4, 40, 80, 16, 16, 32, 32, 24, 24, 72, 72, 8, 4, 48, 48, 4, 28, 224, 64, 32, 16, 8, 32, 64, 32, 72, 36, 4, 32, 64, 32, 32, 8, 40, 120, 24, 16, 64, 128, 32, 16, 24, 24, 64, 64, 16, 32, 32, 32, 128, 64, 16, 24, 48, 32, 16, 16, 24, 96, 64, 8, 24, 48, 24, 48, 160, 40, 8, 16, 16, 32, 16, 16, 192, 96, 16, 16, 16, 16, 48, 24, 16, 32, 32, 16, 16, 32, 16, 72, 108, 24, 16, 8, 32, 128, 16, 4, 72, 288, 16, 32, 64, 8, 16, 32, 48, 72, 36, 24, 32, 16, 8, 16, 96, 96, 24, 36, 24, 32, 32, 16, 96, 48, 8, 32, 32, 16, 32, 64, 80, 80, 16, 8, 96, 96, 16, 16, 24, 72, 96, 16, 8, 48, 48, 8, 32, 32, 4, 16, 128, 32, 16, 48, 72, 48, 8, 12, 96, 64, 16, 48, 168, 56, 48, 48, 32, 64, 32, 16, 72, 72, 16, 16, 32, 16, 8, 16, 64, 320, 40, 8, 32, 32, 32, 64, 48, 12, 12, 36, 24, 16, 32, 16, 80, 80, 8, 24, 24, 32, 32, 16, 24, 24, 16, 32, 128, 64, 8, 16, 64, 16, 8, 16, 48, 144, 48, 8, 48, 96, 16, 32, 32, 8, 24, 48, 48, 192, 32, 8, 32, 32, 8, 16, 192, 96, 16, 8, 16, 96, 24, 8, 96, 48, 16, 32, 32, 16, 16, 64, 96, 72, 24, 16, 64, 96, 12, 16, 80, 40, 48, 24, 16, 32, 24, 12, 24, 48, 8, 48, 192, 32, 32, 32, 64, 64, 16, 16, 48, 96, 16, 8, 48, 96, 64, 32, 32, 64, 16, 16, 256, 128, 8, 16, 64, 16, 24, 48, 24, 48, 16, 4, 16, 32, 48, 72, 48, 16, 8, 32, 64, 64, 16, 4, 48, 96, 16, 16, 32, 64, 64, 16, 20, 60, 24, 16, 64, 32, 4, 16, 48, 12, 24, 24, 16, 64, 16, 16, 128, 192, 24, 20, 80, 32, 32, 16, 24, 48, 32, 32, 48, 24, 4, 24, 288, 48, 8, 8, 8, 48, 48, 16, 48, 24, 12, 48, 64, 64, 64, 32, 64, 128, 16, 8, 128, 128, 8, 12, 36, 24, 16, 32, 32, 16, 16, 8, 60, 120, 32, 96, 48, 8, 16, 16, 24, 192, 32, 4, 16, 32, 16, 32, 128, 64, 48, 48, 16, 16, 16, 32, 96, 48, 8, 24, 192, 32, 16, 16, 28, 112, 16, 4, 40, 80, 32, 64, 96, 48, 16, 16, 32, 48, 24, 8, 64, 64, 8, 32, 32, 48, 72, 12, 12, 48, 64, 16, 16, 32, 8, 32, 160, 60, 48, 32, 32, 32, 16, 16, 144, 144, 16, 16, 32, 32, 48, 96, 64, 48, 12, 16, 64, 16, 8, 32, 96, 48, 32, 16, 16, 128, 96, 24, 96, 48, 8, 24, 48, 16, 8, 24, 72, 96, 16, 8, 96, 48, 4, 8, 32, 32, 48, 48, 32, 96, 96, 16, 24, 96, 16, 16, 32, 16, 24, 24, 80, 80, 8, 8, 32, 64, 16, 24, 72, 24, 64, 64, 32, 32, 16, 16, 128, 128, 8, 8, 32, 64, 32, 8, 24, 216, 72, 16, 64, 64, 16, 16, 72, 72, 24, 72, 48, 16, 8, 4, 48, 48, 16, 128, 128, 32, 16, 8, 16, 64, 48, 12, 24, 24, 8, 64, 192, 24, 16, 16, 16, 96, 48, 16, 80, 160, 16, 8, 32, 16, 20, 40, 24, 48, 16, 12, 96, 64, 16, 24, 96, 128, 32, 8, 24, 96, 16, 12, 108, 36, 8, 32, 32, 8, 16, 64, 96, 96, 64, 32, 96, 48, 4, 8, 48, 96, 48, 24, 16, 32, 32, 8, 64, 128, 8, 24, 48, 8, 8, 32, 96, 48, 8, 8, 64, 96, 24, 32, 80, 40, 32, 32, 16, 72, 72, 32, 96, 24, 8, 16, 64, 32, 24, 24, 16, 64, 48, 24, 32, 16, 16, 80, 60, 24, 32, 32, 16, 32, 16, 8, 112, 112, 16, 32, 64, 32, 16, 16, 48, 72, 24, 16, 64, 64, 8, 48, 192, 32, 32, 16, 16, 64, 48, 12, 24, 96, 32, 24, 24, 16, 32, 16, 20, 40, 8, 16, 192, 192, 32, 16, 72, 36, 8, 16, 16, 64, 32, 4, 32, 64, 32, 64, 32, 8, 12, 24, 24, 48, 16, 8, 64, 32, 8, 24, 144, 144, 24, 8, 16, 64, 64, 64, 240, 120, 8, 16, 32, 16, 32, 16, 32, 192, 48, 8, 16, 64, 32, 16, 48, 24, 36, 36, 32, 64, 8, 8, 80, 40, 8, 64, 128, 16, 8, 32, 48, 96, 64, 8, 24, 24, 8, 32, 64, 32, 32, 64, 64, 48, 12, 4, 48, 48, 8, 32, 32, 32, 64, 32, 64, 128, 64, 32, 32, 32, 16, 48, 144, 24, 8, 16, 48, 96, 32, 8, 48, 96, 8, 16, 64, 32, 32, 32, 24, 60, 20, 16, 128, 64, 16, 16, 80, 80, 48, 24, 8, 48, 24, 4, 48, 144, 24, 24, 24, 16, 32, 32, 64, 64, 8, 4, 64, 128, 8, 16, 48, 48, 32, 16, 16, 24, 72, 48, 96, 48, 8, 32, 32, 32, 48, 24, 48, 48, 16, 16, 64, 64, 16, 64, 128, 32, 32, 32, 16, 32, 32, 24, 108, 72, 24, 24, 64, 32, 8, 16, 80, 480, 96, 8, 16, 32, 16, 16, 48, 48, 40, 80, 32, 16, 8, 8, 128, 128, 8, 24, 96, 32, 32, 16, 12, 24, 16, 8, 24, 48, 16, 32, 112, 56, 32, 32, 64, 128, 16, 8, 48, 72, 24, 48, 96, 16, 24, 48, 64, 64, 16, 32, 64, 16, 4, 24, 144, 48, 32, 16, 8, 64, 32, 4, 80, 160, 24, 24, 32, 16, 8, 32, 48, 36, 24, 16, 64, 128, 32, 32, 64, 32, 24, 12, 16, 64, 32, 16, 96, 48, 4, 24, 144, 48, 16, 8, 48, 96, 8, 16, 96, 48, 16, 16, 24, 12, 32, 32, 8, 24, 24, 32, 128, 128, 16, 16, 96, 24, 16, 32, 48, 192, 64, 16, 32, 32, 32, 96, 120, 20, 8, 16, 32, 32, 32, 32, 144, 72, 4, 16, 32, 32, 32, 16, 32, 64, 32, 8, 32, 32, 4, 16, 96, 48, 48, 48, 32, 64, 32, 8, 40, 80, 16, 24, 48, 64, 96, 24, 12, 48, 32, 16, 80, 80, 8, 8, 128, 128, 32, 16, 16, 96, 24, 8, 48, 48, 16, 48, 48, 8, 24, 144, 120, 80, 16, 8, 64, 64, 16, 32, 48, 24, 16, 16, 64, 64, 16, 16, 96, 96, 16, 64, 64, 8, 8, 8, 36, 216, 48, 8, 32, 128, 32, 16, 48, 48, 64, 32, 8, 32, 32, 32, 192, 48, 4, 12, 48, 16, 16, 48, 48, 96, 48, 16, 48, 24, 16, 64, 96, 48, 16, 32, 32, 80, 40, 8, 160, 80, 4, 8, 32, 32, 24, 12, 24, 48, 32, 64, 64, 48, 24, 48, 192, 32, 16, 32, 32, 32, 16, 8, 48, 192, 32, 16, 16, 8, 32, 32, 28, 168, 24, 12, 48, 16, 8, 64, 192, 48, 24, 24, 16, 32, 32, 8, 32, 64, 32, 64, 64, 32, 16, 16, 24, 24, 16, 8, 48, 48, 8, 32, 80, 80, 32, 32, 64, 48, 24, 8, 24, 48, 32, 64, 32, 8, 24, 48, 64, 192, 48, 8, 32, 192, 24, 24, 144, 24, 16, 32, 16, 16, 8, 16, 288, 72, 4, 8, 32, 32, 32, 16, 24, 192, 64, 16, 32, 32, 24, 48, 64, 16, 12, 48, 64, 64, 32, 8, 48, 48, 4, 24, 96, 64, 32, 8, 20, 80, 96, 48, 64, 32, 4, 32, 96, 24, 16, 8, 32, 96, 12, 8, 128, 128, 16, 16, 16, 8, 24, 96, 96, 48, 16, 16, 64, 32, 8, 40, 160, 64, 32, 32, 16, 64, 32, 8, 72, 144, 32, 16, 32, 48, 24, 16, 32, 96, 24, 12, 96, 32, 12, 24, 48, 72, 96, 32, 8, 16, 16, 16, 80, 80, 8, 24, 48, 16, 32, 32, 96, 192, 16, 8, 48, 48, 16, 32, 128, 32, 24, 24, 8, 32, 32, 16, 48, 48, 8, 8, 32, 64, 48, 24, 48, 96, 32, 16, 96, 48, 8, 24, 36, 12, 16, 96, 48, 32, 32, 32, 256, 64, 8, 16, 16, 16, 32, 32, 24, 72, 96, 16, 16, 32, 16, 32, 160, 80, 24, 24, 64, 128, 16, 8, 48, 48, 8, 16, 32, 16, 64, 64, 64, 128, 16, 8, 48, 96, 16, 16, 96, 24, 8, 16, 32, 144, 72, 16, 112, 56, 8, 32, 64, 32, 32, 32, 48, 48, 16, 16, 64, 64, 8, 12, 48, 128, 64, 8, 8, 32, 48, 12, 72, 72, 8, 64, 128, 32, 16, 16, 80, 280, 56, 8, 16, 64, 48, 48, 48, 12, 24, 24, 16, 64, 32, 24, 96, 32, 16, 96, 192, 32, 8, 16, 24, 48, 32, 16, 64, 64, 16, 32, 96, 48, 32, 32, 32, 48, 12, 4, 72, 288, 16, 16, 64, 32, 24, 12, 32, 64, 16, 16, 64, 64, 8, 32, 96, 24, 16, 8, 16, 32, 32, 32, 120, 240, 16, 8, 16, 16, 64, 64, 24, 72, 48, 16, 64, 32, 4, 8, 64, 64, 40, 80, 64, 64, 16, 12, 72, 48, 48, 72, 24, 8, 8, 32, 144, 144, 16, 4, 48, 48, 4, 8, 72, 144, 64, 32, 16, 64, 128, 32, 64, 32, 8, 48, 48, 16, 48, 24, 24, 96, 32, 16, 32, 64, 16, 12, 120, 40, 16, 16, 16, 64, 16, 16, 192, 96, 16, 64, 192, 24, 8, 8, 16, 96, 48, 16, 64, 32, 16, 32, 24, 36, 36, 48, 64, 32, 8, 4, 48, 192, 16, 20, 40, 24, 48, 32, 24, 24, 16, 16, 96, 48, 16, 64, 64, 16, 8, 16, 32, 96, 24, 8, 48, 96, 16, 16, 64, 32, 64, 64, 40, 40, 16, 32, 64, 32, 16, 24, 72, 24, 24, 24, 16, 128, 64, 16, 96, 96, 16, 32, 32, 16, 16, 24, 72, 96, 16, 4, 32, 32, 4, 16, 112, 112, 96, 48, 16, 32, 64, 16, 24, 24, 8, 48, 48, 16, 32, 32, 96, 96, 16, 8, 48, 96, 16, 16, 48, 48, 32, 48, 48, 48, 12, 16, 160, 80, 16, 16, 64, 64, 24, 12, 12, 144, 48, 4, 16, 16, 8, 64, 256, 32, 16, 32, 16, 32, 32, 16, 144, 72, 8, 16, 32, 32, 32, 32, 48, 72, 36, 48, 64, 64, 32, 32, 48, 12, 16, 32, 64, 64, 16, 8, 32, 64, 8, 24, 96, 16, 16, 16, 12, 48, 32, 40, 120, 48, 16, 16, 80, 80, 32, 16, 8, 80, 80, 16, 96, 48, 16, 32, 16, 16, 24, 48, 64, 96, 24, 4, 48, 96, 32, 96, 72, 24, 16, 8, 16, 96, 48, 8, 64, 128, 8, 16, 128, 32, 8, 32, 96, 72, 12, 16, 64, 48, 12, 8, 32, 48, 144, 96, 16, 16, 8, 16, 96, 48, 8, 16, 64, 32, 32, 32, 80, 160, 32, 8, 24, 24, 12, 48, 96, 48, 32, 64, 64, 48, 36, 12, 64, 64, 4, 16, 32, 32, 80, 20, 24, 96, 64, 16, 32, 64, 16, 72, 216, 24, 8, 16, 32, 64, 16, 4, 36, 144, 32, 32, 32, 16, 32, 16, 32, 256, 64, 16, 64, 32, 4, 8, 72, 36, 12, 24, 32, 64, 32, 24, 120, 80, 16, 48, 48, 8, 16, 64, 48, 24, 24, 12, 64, 256, 16, 8, 32, 48, 24, 8, 16, 96, 96, 32, 48, 48, 8, 32, 64, 16, 48, 24, 56, 112, 16, 8, 16, 32, 16, 48, 72, 48, 96, 48, 16, 16, 8, 16, 192, 48, 4, 16, 64, 32, 32, 32, 24, 72, 24, 8, 64, 32, 16, 32, 80, 80, 32, 48, 48, 64, 16, 4, 48, 96, 8, 12, 96, 128, 32, 16, 32, 64, 32, 16, 48, 48, 8, 32, 96, 24, 32, 32, 48, 96, 32, 8, 48, 288, 48, 32, 32, 8, 24, 48, 48, 48, 8, 8, 32, 32, 8, 24, 192, 32, 8, 16, 32, 128, 64, 8, 60, 60, 16, 32, 16, 16, 32, 32, 40, 120, 48, 24, 192, 128, 8, 8, 48, 48, 24, 24, 16, 16, 24, 12, 32, 64, 24, 96, 64, 16, 16, 8, 24, 192, 32, 16, 96, 48, 8, 8, 80, 80, 32, 32, 32, 48, 24, 48, 288, 48, 8, 16, 32, 32, 64, 64, 32, 64, 16, 4, 16, 64, 32, 48, 72, 12, 16, 32, 32, 32, 8, 8, 120, 120, 16, 48, 48, 32, 32, 8, 24, 120, 80, 16, 16, 16, 4, 32, 256, 64, 24, 12, 16, 64, 32, 16, 96, 144, 12, 24, 96, 16, 16, 32, 48, 48, 8, 8, 64, 32, 16, 64, 96, 48, 32, 16, 8, 96, 48, 4, 32, 64, 32, 32, 48, 24, 24, 48, 24, 48, 32, 32, 128, 64, 8, 16, 80, 40, 32, 48, 48, 32, 16, 16, 72, 72, 8, 24, 96, 32, 16, 16, 128, 192, 24, 8, 16, 64, 16, 16, 48, 24, 48, 48, 16, 64, 64, 16, 112, 56, 8, 24, 72, 72, 24, 16, 48, 96, 32, 8, 48, 48, 16, 32, 32, 32, 32, 128, 128, 64, 16, 8, 96, 48, 8, 16, 16, 24, 72, 48, 40, 80, 32, 8, 32, 32, 8, 48, 144, 96, 32, 16, 32, 32, 8, 8, 128, 256, 16, 16, 64, 16, 24, 24, 12, 72, 24, 8, 32, 32, 16, 32, 192, 96, 24, 24, 32, 64, 32, 16, 48, 24, 16, 160, 160, 32, 16, 32, 64, 32, 32, 32, 96, 144, 12, 16, 96, 96, 32, 16, 16, 24, 24, 16, 160, 80, 4, 32, 64, 16, 32, 48, 108, 72, 8, 8, 32, 32, 16, 24, 48, 32, 64, 32, 16, 64, 32, 16, 72, 36, 4, 8, 64, 64, 16, 16, 64, 384, 96, 16, 32, 64, 32, 16, 24, 12, 24, 48, 32, 64, 16, 8, 128, 128, 8, 12, 24, 16, 32, 32, 72, 144, 48, 12, 40, 80, 8, 32, 160, 20, 16, 16, 16, 48, 48, 32, 48, 48, 8, 16, 32, 32, 96, 48, 32, 64, 32, 48, 192, 32, 4, 16, 192, 48, 16, 32, 16, 32, 32, 8, 72, 72, 16, 64, 32, 16, 16, 16, 24, 108, 72, 8, 48, 96, 24, 48, 128, 128, 64, 16, 8, 16, 16, 32, 96, 48, 16, 48, 48, 8, 16, 32, 80, 160, 16, 4, 48, 288, 48, 32, 48, 12, 16, 32, 32, 96, 24, 16, 128, 32, 4, 16, 128, 32, 12, 24, 48, 96, 64, 16, 32, 32, 12, 36, 84, 112, 32, 16, 16, 32, 16, 4, 48, 48, 8, 16, 32, 64, 64, 64, 128, 96, 24, 16, 32, 16, 8, 48, 72, 12, 12, 48, 64, 64, 32, 8, 40, 160, 16, 16, 64, 16, 32, 32, 24, 48, 8, 24, 144, 48, 16, 32, 192, 96, 32, 16, 8, 48, 24, 4, 24, 48, 16, 32, 64, 32, 40, 40, 96, 96, 16, 16, 64, 32, 8, 48, 72, 48, 64, 32, 16, 16, 32, 32, 96, 96, 16, 32, 64, 32, 32, 16, 24, 96, 16, 4, 48, 192, 16, 8, 40, 20, 36, 72, 16, 16, 16, 16, 96, 192, 32, 48, 96, 32, 16, 16, 32, 128, 32, 16, 128, 32, 16, 32, 48, 24, 8, 24, 48, 48, 24, 16, 72, 36, 8, 32, 64, 64, 96, 24, 12, 48, 32, 8, 16, 48, 12, 40, 320, 64, 16, 8, 48, 192, 16, 4, 36, 144, 16, 16, 64, 32, 32, 32, 40, 60, 48, 32, 32, 16, 8, 32, 96, 48, 32, 16, 8, 48, 24, 4, 64, 128, 16, 24, 24, 32, 32, 64, 96, 24, 16, 16, 96, 48, 12, 48, 96, 48, 16, 16, 32, 128, 128, 32, 48, 24, 4, 32, 128, 16, 12, 12, 32, 128, 16, 8, 32, 32, 16, 24, 36, 24, 64, 64, 32, 32, 24, 36, 240, 320, 16, 8, 32, 32, 16, 16, 48, 144, 48, 16, 64, 32, 16, 96, 96, 16, 12, 24, 16, 32, 32, 16, 144, 144, 16, 32, 32, 32, 32, 16, 56, 112, 64, 32, 96, 96, 8, 16, 48, 12, 8, 16, 64, 192, 24, 4, 32, 96, 48, 32, 32, 16, 32, 64, 48, 96, 16, 8, 32, 32, 8, 24, 240, 40, 8, 32, 64, 64, 16, 16, 144, 72, 24, 24, 32, 16, 32, 64, 32, 80, 20, 8, 64, 64, 8, 8, 24, 48, 96, 24, 16, 64, 32, 16, 96, 48, 8, 72, 144, 16, 16, 16, 24, 96, 32, 8, 32, 128, 16, 16, 128, 128, 64, 32, 16, 24, 12, 8, 96, 96, 16, 16, 48, 24, 12, 24, 80, 320, 64, 8, 16, 32, 32, 64, 96, 48, 16, 16, 16, 64, 64, 8, 96, 96, 8, 32, 64, 48, 24, 8, 12, 36, 48, 64, 64, 16, 4, 16, 128, 32, 20, 40, 32, 32, 16, 24, 72, 96, 32, 24, 24, 8, 24, 24, 32, 128, 32, 32, 192, 96, 16, 32, 96, 48, 16, 8, 16, 128, 64, 16, 80, 80, 16, 16, 16, 32, 48, 72, 72, 24, 8, 8, 128, 128, 16, 24, 48, 32, 32, 48, 24, 16, 32, 32, 96, 48, 8, 64, 64, 16, 32, 32, 96, 288, 24, 8, 64, 64, 8, 16, 96, 24, 24, 24, 8, 16, 8, 16, 128, 32, 8, 56, 112, 32, 32, 32, 48, 144, 24, 8, 48, 96, 64, 32, 40, 40, 32, 32, 48, 144, 24, 4, 48, 192, 16, 16, 32, 16, 32, 32, 32, 32, 48, 48, 64, 32, 4, 24, 144, 48, 32, 16, 32, 64, 16, 16, 168, 168, 16, 16, 16, 8, 16, 32, 24, 96, 64, 24, 48, 32, 16, 16, 64, 32, 12, 24, 32, 192, 96, 8, 24, 24, 8, 24, 48, 16, 16, 32, 80, 80, 8, 16, 160, 40, 4, 16, 48, 24, 32, 48, 24, 48, 48, 8, 32, 128, 16, 16, 32, 8, 24, 48, 96, 96, 16, 8, 16, 80, 40, 64, 192, 48, 32, 32, 32, 32, 24, 24, 72, 72, 16, 16, 64, 64, 32, 32, 32, 96, 24, 4, 32, 64, 24, 96, 96, 24, 32, 64, 32, 16, 8, 8, 160, 80, 16, 48, 48, 64, 32, 8, 12, 48, 64, 16, 24, 48, 16, 48, 192, 128, 64, 16, 16, 80, 20, 12, 144, 96, 8, 8, 32, 32, 96, 48, 40, 80, 16, 32, 64, 32, 8, 12, 108, 72, 16, 16, 32, 64, 32, 16, 128, 64, 8, 64, 64, 16, 16, 32, 96, 144, 48, 8, 32, 32, 4, 8, 40, 120, 72, 24, 48, 96, 32, 8, 48, 48, 8, 64, 128, 16, 8, 32, 128, 128, 32, 8, 24, 96, 64, 32, 24, 24, 64, 64, 16, 48, 24, 16, 192, 96, 8, 8, 64, 64, 48, 24, 12, 96, 32, 8, 64, 32, 8, 24, 96, 32, 16, 48, 24, 32, 16, 8, 144, 216, 24, 32, 64, 32, 16, 8, 40, 160, 32, 8, 16, 16, 16, 128, 192, 24, 12, 24, 48, 48, 16, 24, 96, 128, 16, 24, 96, 32, 32, 16, 12, 48, 16, 8, 128, 64, 4, 16, 224, 112, 32, 64, 32, 72, 72, 16, 48, 24, 24, 48, 16, 16, 24, 24, 32, 64, 32, 16, 64, 64, 16, 40, 120, 48, 32, 32, 16, 48, 72, 24, 120, 60, 4, 16, 32, 16, 32, 32, 96, 144, 24, 8, 32, 128, 32, 16, 32, 16, 32, 64, 64, 64, 16, 32, 96, 24, 8, 72, 144, 48, 48, 32, 48, 192, 64, 8, 24, 24, 8, 16, 24, 48, 32, 32, 32, 32, 32, 16, 128, 128, 8, 8, 32, 32, 24, 24, 24, 24, 16, 16, 32, 32, 16, 96, 240, 40, 32, 16, 16, 64, 16, 4, 60, 180, 24, 16, 48, 24, 16, 16, 32, 96, 12, 16, 128, 128, 16, 16, 96, 48, 48, 24, 8, 32, 32, 8, 64, 256, 48, 48, 32, 16, 16, 32, 96, 48, 8, 8, 96, 48, 4, 32, 128, 32, 32, 16, 16, 48, 48, 32, 48, 48, 16, 48, 96, 48, 48, 32, 80, 160, 16, 8, 64, 64, 8, 24, 72, 24, 32, 32, 32, 64, 32, 16, 96, 96, 16, 16, 64, 32, 16, 32, 24, 72, 24, 8, 32, 32, 32, 32, 96, 48, 24, 96, 32, 32, 16, 8, 96, 48, 4, 12, 24, 48, 144, 24, 32, 64, 16, 16, 64, 128, 32, 32, 96, 24, 8, 8, 32, 192, 24, 4, 40, 80, 8, 32, 64, 16, 72, 72, 24, 24, 32, 64, 128, 64, 16, 32, 128, 64, 16, 8, 8, 32, 16, 8, 144, 288, 32, 16, 16, 8, 8, 48, 168, 84, 12, 8, 64, 32, 8, 16, 48, 96, 80, 40, 32, 64, 32, 24, 96, 64, 8, 24, 96, 16, 8, 8, 36, 144, 64, 32, 48, 48, 16, 32, 80, 20, 32, 64, 16, 64, 64, 16, 48, 48, 16, 48, 96, 32, 24, 12, 48, 384, 64, 8, 16, 16, 8, 48, 144, 48, 16, 32, 64, 32, 16, 16, 144, 72, 8, 32, 32, 64, 128, 16, 24, 72, 36, 24, 64, 64, 8, 16, 64, 32, 48, 48, 32, 32, 16, 8, 24, 48, 16, 40, 80, 16, 16, 64, 80, 120, 24, 12, 72, 24, 4, 16, 192, 48, 8, 16, 32, 96, 48, 32, 128, 32, 16, 32, 32, 16, 32, 128, 48, 48, 16, 4, 48, 192, 32, 24, 108, 72, 16, 8, 16, 32, 32, 32, 72, 36, 4, 32, 64, 16, 16, 8, 32, 128, 48, 48, 64, 48, 12, 8, 24, 48, 96, 24, 16, 64, 32, 16, 160, 80, 8, 24, 96, 32, 16, 32, 24, 96, 32, 4, 48, 96, 32, 32, 32, 16, 8, 32, 64, 96, 48, 16, 96, 48, 8, 32, 64, 32, 24, 24, 48, 96, 32, 24, 96, 64, 16, 96, 144, 24, 64, 32, 16, 32, 8, 4, 48, 192, 32, 32, 64, 64, 64, 32, 48, 72, 12, 8, 32, 32, 16, 32, 240, 120, 32, 16, 16, 64, 64, 16, 24, 48, 16, 48, 48, 16, 32, 32, 64, 64, 8, 4, 48, 48, 8, 32, 48, 36, 24, 32, 32, 40, 40, 8, 56, 168, 24, 64, 64, 8, 12, 12, 48, 192, 16, 8, 64, 128, 16, 12, 96, 32, 24, 48, 16, 32, 32, 64, 384, 96, 16, 16, 32, 16, 16, 16, 20, 120, 96, 16, 16, 48, 24, 16, 24, 24, 48, 96, 64, 64, 32, 16, 128, 128, 8, 32, 64, 16, 16, 8, 24, 48, 32, 32, 96, 48, 4, 16, 96, 96, 32, 16, 48, 144, 24, 8, 96, 192, 32, 16, 32, 32, 80, 160, 64, 32, 8, 8, 32, 32, 32, 48, 72, 48, 16, 8, 16, 192, 48, 8, 120, 60, 16, 64, 128, 32, 8, 16, 24, 48, 32, 16, 64, 32, 8, 32, 128, 64, 48, 48, 16, 32, 48, 12, 24, 48, 24, 72, 48, 24, 24, 24, 96, 128, 16, 4, 32, 128, 16, 24, 144, 24, 32, 32, 8, 24, 24, 24, 192, 128, 8, 16, 64, 32, 24, 24, 24, 48, 16, 16, 128, 64, 16, 48, 120, 40, 16, 32, 64, 32, 16, 8, 72, 72, 8, 16, 16, 16, 32, 16, 16, 96, 96, 16, 16, 16, 4, 16, 144, 72, 32, 32, 64, 128, 32, 16, 96, 144, 12, 24, 96, 16, 32, 64, 24, 24, 8, 16, 96, 48, 8, 16, 128, 32, 16, 16, 16, 128, 32, 8, 96, 48, 12, 48, 64, 32, 24, 24, 40, 40, 16, 8, 32, 128, 32, 48, 144, 144, 48, 8, 8, 16, 16, 16, 160, 160, 16, 48, 48, 16, 32, 32, 48, 72, 24, 16, 32, 64, 64, 64, 112, 56, 48, 24, 8, 32, 16, 16, 96, 48, 8, 16, 192, 96, 32, 16, 16, 64, 32, 16, 96, 48, 8, 16, 48, 48, 48, 48, 32, 48, 24, 16, 160, 160, 8, 8, 16, 32, 64, 16, 24, 96, 64, 32, 32, 16, 4, 48, 192, 16, 8, 32, 64, 64, 32, 16, 72, 144, 32, 16, 16, 16, 48, 24, 24, 120, 40, 16, 64, 32, 8, 32, 96, 24, 12, 72, 96, 128, 32, 8, 64, 64, 32, 48, 24, 8, 16, 48, 72, 192, 64, 16, 128, 64, 4, 8, 80, 160, 32, 8, 8, 24, 24, 32, 96, 48, 8, 16, 96, 48, 48, 24, 48, 96, 16, 8, 32, 128, 16, 32, 96, 12, 16, 32, 48, 96, 32, 32, 160, 80, 16, 32, 64, 16, 16, 32, 24, 108, 72, 8, 16, 32, 32, 64, 64, 32, 48, 48, 16, 16, 16, 8, 96, 96, 4, 24, 48, 16, 32, 32, 40, 40, 32, 32, 48, 48, 16, 32, 96, 24, 8, 16, 32, 128, 64, 16, 64, 128, 32, 16, 32, 64, 96, 48, 48, 96, 16, 24, 96, 16, 4, 12, 144, 48, 32, 32, 16, 64, 16, 8, 96, 96, 16, 32, 64, 16, 8, 32, 128, 96, 12, 8, 96, 96, 8, 16, 48, 24, 48, 48, 32, 64, 96, 24, 40, 80, 8, 40, 160, 64, 32, 8, 24, 96, 32, 8, 48, 144, 12, 8, 64, 64, 32, 64, 32, 48, 48, 16, 48, 24, 16, 64, 64, 16, 16, 16, 28, 224, 32, 8, 64, 32, 24, 72, 72, 48, 16, 16, 16, 16, 8, 12, 288, 384, 32, 16, 16, 16, 32, 64, 48, 48, 32, 8, 32, 128, 32, 64, 160, 20, 12, 24, 64, 128, 16, 8, 96, 96, 16, 48, 48, 16, 32, 16, 16, 64, 64, 32, 80, 40, 8, 32, 144, 144, 32, 8, 8, 96, 48, 8, 96, 48, 8, 16, 32, 16, 12, 48, 96, 96, 32, 8, 32, 32, 8, 32, 128, 192, 48, 16, 16, 32, 64, 16, 36, 36, 8, 64, 128, 16, 16, 16, 40, 120, 12, 16, 64, 32, 8, 16, 48, 24, 64, 64, 32, 64, 32, 32, 128, 96, 12, 12, 96, 32, 16, 16, 24, 96, 16, 4, 24, 48, 16, 64, 256, 32, 8, 24, 48, 112, 56, 8, 48, 96, 16, 32, 32, 32, 96, 48, 32, 32, 32, 16, 32, 64, 16, 48, 72, 12, 8, 32, 128, 64, 8, 16, 320, 160, 24, 24, 16, 16, 32, 16, 24, 144, 48, 32, 128, 64, 8, 16, 256, 64, 12, 24, 16, 48, 48, 16, 48, 48, 16, 32, 32, 8, 16, 32, 48, 96, 32, 8, 48, 192, 32, 16, 24, 48, 64, 16, 32, 96, 36, 12, 32, 64, 16, 96, 96, 16, 40, 60, 72, 48, 16, 16, 32, 32, 8, 12, 120, 80, 64, 64, 16, 16, 8, 12, 216, 144, 8, 16, 64, 64, 32, 16, 32, 128, 32, 4, 32, 64, 32, 64, 96, 48, 48, 96, 32, 32, 16, 8, 112, 56, 4, 24, 144, 96, 32, 16, 24, 24, 16, 16, 64, 32, 16, 64, 64, 32, 32, 16, 32, 96, 24, 8, 24, 192, 32, 8, 32, 16, 24, 24, 40, 240, 24, 16, 128, 64, 16, 80, 240, 48, 16, 8, 8, 32, 64, 32, 96, 48, 12, 24, 32, 48, 24, 16, 48, 144, 48, 16, 128, 64, 4, 8, 48, 48, 32, 32, 16, 32, 32, 16, 96, 96, 16, 72, 144, 16, 8, 8, 32, 128, 32, 16, 48, 96, 32, 16, 48, 24, 16, 32, 16, 32, 32, 32, 160, 40, 8, 32, 96, 48, 72, 72, 24, 48, 32, 16, 32, 64, 32, 48, 96, 32, 16, 32, 64, 64, 32, 8, 60, 60, 4, 16, 128, 96, 24, 16, 72, 216, 96, 32, 32, 16, 8, 64, 96, 48, 48, 12, 16, 64, 16, 4, 64, 128, 16, 32, 32, 8, 32, 96, 72, 48, 8, 8, 48, 48, 32, 32, 80, 80, 16, 16, 16, 96, 96, 8, 48, 48, 8, 16, 32, 32, 32, 96, 192, 64, 8, 16, 128, 32, 8, 24, 36, 48, 64, 16, 8, 32, 64, 16, 72, 144, 16, 32, 64, 32, 32, 32, 72, 180, 60, 12, 32, 128, 16, 16, 64, 32, 48, 24, 16, 32, 16, 32, 96, 24, 4, 12, 48, 64, 32, 32, 80, 120, 48, 16, 128, 64, 8, 32, 48, 12, 16, 64, 32, 24, 12, 4, 64, 128, 32, 64, 64, 64, 48, 24, 24, 72, 72, 12, 16, 32, 16, 64, 448, 56, 16, 16, 32, 128, 16, 8, 72, 72, 8, 32, 64, 16, 64, 32, 16, 48, 12, 16, 64, 64, 32, 32, 192, 96, 40, 20, 16, 64, 16, 4, 40, 80, 32, 96, 48, 16, 32, 32, 24, 24, 24, 24, 144, 72, 4, 8, 32, 64, 64, 16, 8, 32, 32, 32, 192, 96, 8, 16, 64, 32, 48, 96, 192, 96, 24, 12, 16, 48, 24, 24, 72, 24, 16, 16, 16, 128, 32, 8, 128, 128, 8, 8, 64, 32, 8, 16, 48, 288, 48, 16, 64, 16, 12, 48, 80, 40, 48, 96, 64, 32, 16, 16, 96, 96, 16, 48, 96, 32, 32, 16, 32, 64, 16, 24, 72, 24, 4, 48, 288, 48, 16, 16, 32, 48, 48, 32, 128, 128, 8, 8, 32, 32, 64, 64, 24, 24, 16, 16, 96, 96, 8, 24, 288, 96, 16, 16, 32, 128, 32, 4, 36, 36, 16, 64, 32, 32, 32, 16, 40, 160, 32, 8, 64, 64, 8, 16, 96, 72, 36, 24, 32, 32, 32, 32, 128, 128, 16, 48, 96, 16, 16, 16, 24, 48, 8, 12, 120, 240, 24, 16, 96, 48, 48, 48, 32, 48, 24, 16, 48, 48, 16, 32, 64, 16, 24, 48, 64, 256, 64, 8, 16, 16, 16, 64, 48, 24, 32, 96, 96, 32, 8, 4, 60, 120, 8, 8, 16, 16, 16, 32, 96, 144, 48, 8, 16, 16, 12, 48, 64, 32, 64, 32, 24, 192, 32, 4, 24, 96, 32, 24, 48, 32, 32, 16, 28, 56, 16, 32, 96, 48, 8, 8, 96, 96, 32, 32, 16, 80, 80, 32, 128, 64, 16, 32, 64, 16, 12, 24, 48, 96, 32, 8, 32, 32, 8, 72, 180, 40, 32, 32, 32, 64, 96, 24, 48, 192, 16, 16, 32, 16, 16, 8, 32, 96, 12, 4, 32, 128, 64, 32, 48, 24, 24, 48, 16, 16, 8, 24, 288, 48, 8, 64, 128, 16, 8, 16, 48, 192, 64, 16, 48, 48, 16, 32, 192, 48, 8, 16, 16, 48, 24, 16, 288, 72, 4, 16, 32, 32, 112, 56, 80, 160, 32, 8, 32, 64, 8, 24, 72, 24, 32, 32, 64, 64, 16, 8, 48, 144, 12, 16, 32, 16, 64, 64, 24, 48, 64, 64, 64, 32, 8, 8, 88, 264, 72, 12, 16, 64, 32, 8, 48, 96, 32, 96, 96, 16, 8, 32, 64, 64, 32, 8, 64, 128, 16, 32, 48, 24, 32, 16, 16, 96, 96, 16, 40, 40, 8, 48, 96, 32, 24, 24, 48, 96, 32, 32, 64, 96, 48, 40, 80, 16, 32, 64, 32, 64, 16, 16, 144, 72, 16, 16, 48, 24, 16, 16, 48, 288, 24, 8, 32, 48, 24, 32, 48, 12, 16, 32, 16, 32, 64, 32, 128, 64, 8, 48, 96, 96, 48, 16, 24, 48, 32, 8, 48, 48, 4, 32, 160, 20, 8, 24, 96, 128, 16, 4, 24, 48, 16, 16, 32, 32, 72, 72, 32, 128, 64, 32, 64, 16, 4, 12, 144, 96, 32, 32, 16, 32, 16, 8, 168, 84, 16, 32, 16, 32, 128, 128, 48, 36, 12, 8, 64, 64, 16, 16, 64, 128, 48, 48, 96, 48, 16, 8, 24, 48, 8, 64, 256, 32, 16, 8, 60, 120, 16, 8, 24, 48, 24, 24, 24, 24, 32, 32, 32, 96, 48, 16, 128, 128, 8, 16, 64, 32, 32, 32, 24, 72, 48, 8, 32, 32, 16, 96, 144, 24, 16, 32, 16, 48, 48, 32, 288, 144, 16, 16, 32, 32, 16, 16, 32, 96, 144, 48, 64, 32, 4, 32, 96, 12, 24, 24, 16, 64, 16, 4, 40, 320, 32, 12, 24, 24, 48, 32, 96, 96, 8, 12, 96, 32, 12, 48, 128, 64, 16, 16, 16, 48, 72, 12, 48, 96, 16, 32, 64, 32, 48, 48, 64, 64, 16, 8, 48, 48, 8, 32, 96, 96, 64, 64, 64, 64, 32, 16, 96, 48, 8, 32, 64, 32, 16, 16, 48, 144, 24, 8, 32, 48, 24, 48, 240, 40, 40, 40, 8, 16, 16, 48, 144, 48, 16, 24, 96, 64, 32, 32, 32, 128, 32, 8, 48, 96, 48, 24, 24, 24, 16, 16, 64, 256, 32, 4, 96, 192, 8, 16, 64, 32, 24, 12, 12, 48, 64, 32, 32, 32, 16, 72, 144, 32, 16, 16, 32, 32, 32, 32, 96, 192, 32, 16, 16, 8, 16, 64, 80, 120, 24, 16, 64, 16, 8, 16, 72, 36, 24, 48, 32, 128, 32, 4, 64, 64, 8, 40, 80, 16, 16, 64, 48, 24, 8, 16, 192, 192, 32, 16, 56, 140, 160, 32, 8, 24, 24, 8, 24, 96, 32, 32, 32, 16, 32, 16, 64, 128, 16, 16, 32, 32, 8, 24, 144, 48, 48, 24, 8, 32, 32, 16, 120, 60, 4, 16, 128, 64, 16, 8, 24, 192, 32, 4, 32, 64, 32, 32, 64, 64, 24, 72, 96, 32, 16, 16, 96, 96, 24, 36, 24, 16, 32, 16, 24, 96, 32, 8, 48, 144, 12, 32, 192, 48, 16, 16, 48, 144, 24, 16, 128, 64, 16, 32, 32, 8, 48, 48, 24, 48, 16, 16, 64, 64, 16, 32, 160, 80, 16, 8, 16, 96, 48, 16, 72, 36, 16, 96, 48, 8, 8, 32, 128, 96, 48, 16, 32, 64, 16, 16, 48, 96, 64, 32, 16, 16, 32, 32, 144, 72, 8, 48, 48, 16, 32, 64, 96, 96, 16, 8, 96, 96, 16, 32, 64, 48, 48, 16, 8, 80, 40, 12, 72, 48, 16, 16, 96, 48, 12, 24, 40, 80, 16, 16, 64, 16, 16, 96, 144, 48, 32, 64, 32, 16, 8, 4, 64, 128, 16, 32, 64, 32, 16, 16, 48, 72, 48, 32, 64, 64, 8, 32, 192, 48, 24, 24, 32, 32, 16, 16, 96, 144, 12, 16, 32, 48, 96, 16, 16, 64, 16, 16, 192, 48, 4, 8, 48, 48, 32, 32, 16, 48, 96, 16, 40, 80, 48, 48, 16, 8, 20, 80, 96, 192, 64, 8, 32, 32, 4, 24, 192, 128, 32, 8, 32, 64, 16, 16, 72, 72, 8, 32, 64, 16, 48, 96, 224, 448, 32, 4, 16, 64, 16, 16, 48, 12, 24, 24, 16, 32, 16, 16, 64, 64, 8, 24, 144, 48, 32, 16, 24, 96, 64, 32, 64, 32, 8, 16, 80, 80, 32, 64, 32, 24, 24, 16, 192, 192, 16, 32, 32, 48, 72, 36, 48, 32, 16, 16, 32, 32, 32, 112, 84, 12, 8, 8, 16, 64, 16, 8, 144, 288, 32, 32, 128, 32, 24, 48, 24, 36, 12, 16, 128, 32, 4, 16, 128, 64, 64, 64, 16, 64, 32, 8, 48, 48, 16, 48, 96, 16, 16, 48, 120, 80, 16, 8, 48, 96, 16, 32, 48, 48, 32, 8, 16, 128, 128, 32, 64, 32, 8, 32, 32, 16, 48, 48, 96, 192, 16, 4, 32, 128, 16, 12, 96, 64, 32, 64, 32, 16, 8, 8, 120, 120, 16, 16, 64, 64, 32, 32, 64, 288, 72, 8, 16, 32, 16, 16, 48, 96, 48, 24, 32, 64, 16, 16, 320, 160, 8, 16, 64, 32, 32, 16, 12, 48, 96, 48, 48, 48, 8, 32, 128, 16, 16, 16, 32, 96, 12, 16, 96, 48, 16, 64, 64, 8, 32, 32, 24, 48, 24, 36, 96, 128, 32, 24, 72, 48, 16, 8, 16, 64, 32, 8, 96, 192, 16, 16, 32, 16, 8, 32, 96, 120, 40, 16, 96, 96, 32, 32, 40, 40, 24, 24, 16, 32, 64, 32, 48, 24, 4, 48, 192, 16, 16, 16, 32, 128, 32, 24, 96, 128, 16, 8, 48, 48, 64, 32, 24, 72, 24, 32, 224, 224, 16, 16, 64, 32, 24, 24, 48, 96, 16, 8, 32, 16, 12, 96, 256, 64, 32, 64, 32, 16, 16, 8, 72, 72, 4, 8, 16, 64, 64, 16, 40, 120, 48, 8, 48, 48, 8, 48, 144, 24, 24, 48, 64, 64, 8, 8, 64, 64, 32, 96, 48, 16, 32, 48, 36, 96, 64, 16, 48, 24, 8, 16, 96, 96, 16, 16, 16, 64, 64, 16, 48, 48, 32, 64, 32, 8, 24, 48, 32, 32, 16, 16, 128, 192, 24, 48, 144, 72, 24, 16, 32, 64, 32, 16, 160, 160, 16, 64, 64, 16, 16, 8, 24, 72, 48, 16, 16, 64, 16, 16, 128, 64, 72, 36, 16, 96, 48, 16, 96, 48, 8, 40, 80, 16, 8, 16, 80, 160, 32, 16, 48, 48, 48, 96, 48, 12, 8, 48, 48, 48, 24, 4, 64, 128, 8, 8, 64, 128, 128, 32, 24, 96, 32, 16, 32, 32, 8, 24, 120, 80, 64, 16, 24, 48, 8, 8, 72, 144, 16, 8, 32, 32, 64, 32, 32, 128, 16, 16, 128, 32, 4, 32, 192, 24, 24, 72, 48, 96, 48, 16, 96, 48, 16, 48, 24, 16, 16, 16, 48, 48, 8, 16, 160, 80, 16, 32, 64, 32, 32, 32, 16, 48, 72, 12, 48, 48, 8, 32, 64, 32, 24, 24, 80, 160, 64, 32, 32, 32, 8, 16, 144, 36, 16, 32, 16, 32, 48, 96, 384, 96, 8, 8, 32, 32, 32, 16, 12, 144, 48, 8, 64, 64, 32, 32, 56, 28, 16, 64, 128, 128, 32, 8, 72, 144, 8, 24, 48, 16, 16, 32, 128, 64, 32, 16, 24, 48, 16, 32, 48, 36, 48, 32, 32, 96, 24, 4, 80, 240, 24, 32, 32, 16, 48, 96, 48, 48, 16, 8, 32, 16, 16, 96, 192, 64, 16, 8, 8, 64, 64, 8, 48, 48, 12, 48, 64, 32, 32, 64, 96, 144, 48, 16, 64, 64, 16, 16, 24, 24, 72, 36, 16, 32, 32, 16, 32, 128, 16, 48, 192, 32, 16, 16, 96, 192, 16, 4, 48, 96, 8, 16, 80, 20, 16, 16, 24, 72, 24, 48, 144, 24, 4, 8, 64, 128, 80, 20, 16, 128, 64, 16, 64, 64, 16, 24, 36, 24, 32, 96, 48, 32, 32, 8, 64, 128, 16, 32, 64, 48, 48, 16, 24, 192, 64, 16, 32, 32, 16, 32, 128, 64, 24, 24, 32, 32, 16, 32, 192, 96, 16, 24, 24, 8, 48, 48, 20, 40, 16, 16, 64, 128, 16, 8, 48, 48, 32, 32, 48, 144, 24, 8, 64, 64, 32, 128, 128, 32, 24, 36, 36, 48, 32, 8, 32, 64, 8, 20, 120, 96, 32, 8, 8, 16, 32, 32, 144, 72, 16, 64, 64, 16, 8, 16, 96, 144, 12, 8, 32, 64, 32, 32, 48, 48, 128, 64, 16, 48, 24, 16, 160, 40, 8, 24, 96, 32, 16, 32, 24, 96, 32, 16, 96, 48, 16, 16, 32, 16, 16, 64, 32, 32, 32, 16, 96, 96, 8, 8, 32, 64, 48, 24, 112, 224, 48, 24, 32, 32, 8, 48, 288, 24, 16, 32, 64, 192, 96, 16, 80, 160, 16, 16, 16, 16, 32, 32, 24, 36, 24, 24, 96, 32, 4, 16, 160, 40, 24, 48, 32, 128, 32, 8, 48, 24, 16, 64, 64, 32, 16, 16, 64, 128, 16, 4, 72, 72, 4, 16, 192, 96, 16, 16, 16, 24, 24, 24, 144, 192, 16, 32, 128, 16, 32, 32, 24, 48, 8, 8, 32, 96, 96, 48, 48, 32, 64, 32, 16, 32, 8, 8, 72, 108, 12, 32, 128, 32, 32, 16, 20, 200, 80, 16, 64, 64, 32, 32, 48, 96, 48, 24, 16, 16, 8, 8, 128, 128, 8, 12, 48, 64, 64, 32, 24, 24, 32, 32, 64, 64, 16, 48, 216, 36, 16, 16, 32, 384, 96, 8, 24, 48, 16, 16, 32, 16, 24, 48, 64, 64, 8, 16, 64, 32, 16, 64, 288, 36, 16, 64, 64, 64, 16, 4, 60, 180, 24, 32, 32, 8, 16, 64, 96, 144, 48, 16, 64, 32, 8, 32, 64, 96, 120, 20, 8, 16, 32, 16, 48, 48, 8, 48, 96, 64, 32, 8, 48, 96, 16, 16, 96, 192, 16, 16, 48, 36, 72, 48, 16, 32, 16, 8, 128, 128, 24, 48, 64, 32, 24, 12, 12, 96, 64, 8, 32, 128, 32, 24, 120, 80, 16, 40, 40, 32, 16, 8, 192, 96, 8, 32, 32, 16, 32, 16, 16, 48, 48, 64, 64, 32, 16, 64, 96, 12, 12, 24, 96, 96, 16, 8, 56, 112, 8, 24, 96, 16, 16, 32, 24, 48, 64, 32, 48, 48, 16, 32, 128, 128, 32, 8, 16, 144, 72, 8, 48, 96, 16, 32, 64, 16, 32, 256, 160, 80, 32, 8, 32, 32, 8, 24, 36, 24, 32, 32, 32, 64, 48, 48, 192, 48, 8, 32, 96, 48, 16, 8, 48, 192, 16, 8, 32, 32, 16, 16, 96, 48, 48, 48, 16, 64, 16, 12, 72, 96, 32, 48, 96, 16, 8, 16, 64, 256, 64, 8, 40, 80, 32, 64, 48, 24, 16, 16, 16, 48, 48, 24, 240, 160, 16, 16, 16, 48, 144, 24, 24, 48, 16, 8, 32, 64, 8, 32, 128, 32, 16, 32, 64, 32, 8, 8, 72, 216, 48, 32, 64, 32, 32, 32, 64, 192, 48, 32, 128, 32, 8, 16, 96, 48, 16, 16, 8, 64, 64, 16, 64, 32, 12, 72, 96, 32, 48, 48, 48, 48, 8, 8, 96, 96, 16, 16, 80, 160, 32, 16, 32, 80, 80, 16, 24, 24, 4, 48, 96, 16, 48, 48, 64, 64, 16, 16, 64, 64, 8, 24, 72, 48, 128, 64, 16, 32, 16, 16, 384, 96, 8, 32, 96, 24, 8, 48, 144, 144, 24, 4, 16, 16, 16, 64, 64, 16, 12, 24, 32, 64, 32, 8, 48, 192, 64, 64, 64, 64, 64, 32, 40, 80, 32, 16, 48, 48, 8, 16, 96, 48, 32, 32, 32, 96, 48, 8, 64, 256, 16, 8, 16, 8, 24, 48, 72, 72, 16, 64, 128, 16, 4, 24, 336, 56, 8, 8, 8, 32, 64, 32, 72, 72, 16, 16, 32, 64, 32, 24, 48, 128, 32, 8, 128, 128, 8, 16, 48, 24, 24, 24, 32, 64, 64, 32, 80, 80, 32, 96, 48, 8, 16, 32, 72, 216, 24, 4, 32, 64, 16, 32, 128, 64, 64, 32, 16, 96, 48, 32, 96, 48, 16, 16, 64, 96, 72, 48, 48, 144, 24, 4, 16, 32, 16, 40, 120, 48, 16, 16, 64, 64, 16, 8, 96, 96, 4, 32, 64, 32, 64, 32, 24, 36, 48, 16, 16, 16, 8, 64, 160, 80, 64, 64, 64, 64, 16, 4, 48, 192, 16, 24, 48, 8, 16, 32, 64, 64, 16, 24, 144, 48, 8, 16, 48, 24, 16, 32, 32, 256, 64, 8, 88, 44, 8, 32, 64, 32, 24, 24, 48, 48, 32, 48, 144, 48, 4, 12, 48, 64, 64, 32, 32, 64, 32, 16, 120, 120, 16, 32, 32, 16, 16, 16, 160, 240, 24, 8, 32, 192, 24, 16, 96, 24, 24, 96, 32, 16, 16, 16, 64, 96, 24, 32, 64, 32, 48, 24, 12, 48, 16, 4, 48, 96, 48, 96, 96, 48, 32, 64, 32, 24, 24, 16, 96, 96, 16, 32, 64, 32, 32, 32, 32, 128, 64, 16, 32, 16, 8, 96, 576]
Eccolo qua... ma non mi pare ci sia un ordine particolare :| (l'ho messo minuscolo altrimenti occupava troppo spazio)

Inviato: 23 giu 2009, 21:08
da Haile
@dario: posteresti il tuo codice? Magari anche a parole, visto che di JS non so molto... comunque pyton è considerato uno dei più lenti per queste cose. Sul sito del progetto, dopo che hai dato un risultato corretto, puoi accedere ai commenti di chi l'ha già risolto ed ho visto che, per gli utilizzatori di python, i tempi di esecuzione non andavano molto sotto i 10 secondi... con PC da 2 gHz
SkZ ha scritto:qual e' l'andamento del numero di divisori dei numeri triangolari?
Per $ $\tfrac{n(n+1)}{2}$ $ con n = 1,2,3... la sequenza dei numeri di divisori è

Codice: Seleziona tutto

1 2 4 4 4 4 6 9 6 4 8 8 4 8 16 8 6 6 8 16 8 4 12 18 6 8 16 8 8 8 10 20 8 8 24 12 4 8 24 12 8 8 8 24 12 4 16 24 9 12 16 8 8 16 24 24 8 4 16 16 4 12 36 24 16 8 8 16 16 8 18 18 4 12 24 16 16 8 16 40 10 4 16 32 8 8 24 12 12 24 16 16 8 8 40 20 6 18 36

Inviato: 23 giu 2009, 21:13
da Haile
@dario:

Credo che il tuo programma necessiti di una bella debuggata:

[2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 16, 8, 4, 8, 8, 4, 8, 16, 8, 4, 4, 8...

L'ottavo numero triangolare è 36 (8*9/2) ed ha 9 divisori.. tu ne segni 4

Inviato: 23 giu 2009, 21:23
da dario2994
Si ma per spiegarti js non è neppure un linguaggio eseguibile, lo compila il browser, e non gli dedica mai più del 50% della CPU... comunque eccovi il codice, in python vi assicuro che potete arrivare sotto i 200ms senza problemi ;)
Ecco il codice (commentato un minimo xD)

Codice: Seleziona tutto

<script>
/*Questa funzione trova tutti i primi fino al numero limit; per farlo usa una versione ottimizzata del crivello di Erastotene*/
Math.primes=function(limit)

{
	var primi = new Array(2,3);
	for(var i=2;primi[i-1]<limit;i++)
	{
		for(var h=primi[primi.length-1]+2;h;h+=2)
		{
			for(var j=1;j<primi.length;j++)
			{
				if(h%primi[j])continue;
				break;
			}
			if(j==primi.length){primi.push(h);break;}
		}
	}
	return(primi);
}
/*Questa funzione calcola il numero di divisori del numero passato (lo fattorizza)*/
Math.divisors=function(n)
{
	var div=1;
	var m=0;
	for(var i=0;primes[i]<Math.floor(Math.pow(n,1/2));i++)
	{
		if(n%primes[i]){div*=(m+1);m=0;continue;}
		m++;
		n/=primes[i];
		i--;
		if(n==1)break;
	}
	if(n==primes[i]){div*=(m+2);}
	else if(n!=1){div*=2*(m+1);}
	else{div*=(m+1);}
	return(div)
}
/*Questa funzione prova tutti i numeri triangolari fino a quello espresso come n(n+1)/2 e restituisce (se presente) il primo con 500 divisori*/
Math.euler=function(n)
{
	primes=Math.primes(Math.floor(Math.pow(n+1,1/2)));
	for(i=2;i<n>500){return(i*(i+1)/2)}
		else if((i+1)%2&&Math.divisors(i/2)*Math.divisors(i+1)>500){return(i*(i+1)/2)}
	}
	return(false);
}
</script>
Se volete provarlo basta salvate in HTML un file così, lo aprite col browser e nella barra degli indirizzi scrivete:
javascript:alert(Math.euler(15000))
e cliccate invio ;) nel giro di un attimo vi comparirà il numero cercato ;)

EDIT:uhm... mi sa che ho fatto un errorino nella funzione che trova i divisori... tento di correggere :)

Inviato: 23 giu 2009, 21:30
da Haile
dario2994 ha scritto: EDIT:uhm... mi sa che ho fatto un errorino nella funzione che trova i divisori... tento di correggere :)
Nessun problema, eh... era solo per farti notare che c'era qualcosa che non andava nell'output :P

Comunque ho capito cosa fa il tuo programma, mi pare sia una buona idea... anche se io sono abbastanza pigro e i 15 secondi mi vanno più che bene 8) È abbastanza interessante quel Progetto, io ne ho risolti una quindicina (i più semplici, eh)