Es. 11. 08/05

Da aptiva.

Enumerare tutti i casi possibili e' una soluzione solo quando il numero dei possibili casi e' finito.

Leggendo la pagina su wikipedia si possono trovare piu' metodi di soluzione del problema.

Visto che l'ennesimo numero triangolare e' la somma dei primi n naturali si puo':

  • calcolare uno dopo l'altro i numeri triangolari (il numero n-mo si ottiene dal precedente aggiungendo n),

ad ogni passo si controlla il numero ottenuto con quallo dato in input. Prima o poi si otterra' o che sono uguali (e quindi il numero inserito e' triangolare!) o che il numero triangolare calcolato supera quello inserito (e quindi e' inutile andare oltre, il numero non e' triangolare).

  • in alternativa si puo' procedere al contrario.

Si prende il numero dato. Ad esso si sottrae prima 1 poi 2 poi 3 e cosi' via. Se il numero man mano decrementato ad un certo punto diventa zero, vuole dire che il numero dato era triagolare, se il numero diventa negativo vuole dire che non lo era.

  • un metodo piu' analitico e meno algoritmico e' indicato in fondo alla pagina di wikipedia.

se ((8*n+1)**(0.5)-1)/2 e' un numero intero allora n e' triangolare.... come si controlla pero' se il risultato di una espressione e' un numero intero?

La soluzione proposta da SIlvia oggi 30 maggio:

print"questo programma stabilisce se il numero inserito è triangolare o meno"
n=input("inserisci il numero N=")
importh math
n=math.sqrt(1+8*N)
n_int=round(n)
ifn-n_int==0:
    print"vero,il numeroinserito N=",N"è triangolare"
    else:
        print"FALSO, il numero inserito N=",N,"NON è triangolare"

ha numerosi errori di sintassi! Non e' stato provato questo programma? import (senza h) di solito si specifica all'inizio del programma. La variabile N (maiuscolo) non esiste. il controllo non viene riconosciuto perche' if (parola chiave) e n (variabile) non hanno uno spazio fra loro. L'else, facendo riferimento all'if, ha una indentazione errata. anche nelle stampe non c'e' spaziatura fra la parola chiave print e la stringa, viene nominata la variabile inesistente N e manca una virgola. La parte positiva dell'esercizio e' l'idea di controllare se un numero e' intero confrontando la radice esatta con quella approssimata all'intero piu' prossimo.

Strumenti personali
Namespace

Varianti
Azioni
Navigazione
Strumenti