Problemino di Gauss

Quanto vale la somma dei numeri da 1 a 100?

Soluzione 1

Svolgi 100 noiosissime addizioni…

i 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

Program Gauss;
Var
   i    ,
   somma: Integer;
Begin
   somma:=0;
   For i:=1 To 100 Do
      somma:=somma+i;
   Writeln(somma);
   ReadLn;
End.

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

e infine

100*101/2 = 5050.

Si può dimostrare effettivamente che la progressione aritmetica di ragione 1 ha come somma

serie_aritmetica

Program Gauss;
Var
   n: Integer;
Begin
   Write('Scegli n = ');
   ReadLn(n);
   Writeln(n*(n+1)/2);
   ReadLn;
End.