Quanto vale la somma dei numeri da 1 a 100?
Soluzione 1
Svolgi 100 noiosissime addizioni…
|-----|-------------------| | n | Somma | |-----|-------------------| | | 0 | | 1 | 0 + 1 = 1 | | 2 | 1 + 2 = 3 | | 3 | 3 + 3 = 6 | | ... | ... + ... = ... | | 98 | 4753 + 98 = 4851 | | 99 | 4851 + 99 = 4950 | | 100 | 4950 + 100 = 5050 | |-----|-------------------|
Soluzione 2
Traduci l’algoritmo precedente in un programma
somma=0 For n=1 To 100 somma=somma+n EndFor TextWindow.WriteLine(somma)
Soluzione 3
Da Wikipedia: Carl Friedrich Gauss
Gauss era un bambino prodigio. Esistono diversi aneddoti riguardo alla sua precocità; per esempio, Gauss, almeno secondo la leggenda, all’età di tre anni avrebbe corretto un errore del padre nel calcolo delle sue finanze.
Un altro aneddoto, forse più verosimile, racconta che a nove anni di età, quando andava a scuola, il suo insegnante, J.G. Büttner, per mettere a tacere i turbolenti allievi, ordinò loro di fare la somma di tutti i numeri da 1 a 100. Poco dopo, il giovanissimo Carl diede per primo la risposta esatta, sorprendendo l’insegnante ed il suo assistente Martin Bartels.
Non si è certi di quale metodo abbia adottato Gauss per risolvere il problema; presumibilmente, egli si era accorto che, mettendo in una riga tutti i numeri da 1 a 100 e nella riga sottostante i numeri da 100 a 1, ogni colonna dava come somma 101: Carl fece dunque il prodotto 100×101 e divise per 2, ottenendo facilmente il risultato.
Quindi
- 1+100=101, 2+99=101, …, 100+1=101
- 100*101/2=5050.
TextWindow.Write("n = ") n=TextWindow.ReadNumber() somma=n*(n+1)/2 TextWindow.WriteLine(somma)