Suma numerelor naturale dintr-un interval dat în C++

Dându-se două numere naturale, x și y, să se determine suma x + (x + 1) + (x + 2) + … + (y - 1) + y (suma numerelor naturale din intervalul [x; y]).

Exemplu. Pentru x = 3 și y = 5, avem suma 3 + 4 + 5 = 12.

Explicarea algoritmului

Observăm următorul lucru: suma căutată de noi, `x + (x + 1) + (x + 2) + … + (y

      • yeste egală cu suma1 + 2 + 3 + … + (x - 1) + x + (x + 1) + … + (y -
    • y(suma numerelor de la1lay), de unde scădem suma 1 + 2 + 3 + …
  • (x - 1)(suma numerelor de la1lax - 1`).

Din fericire, avem formula sumei Gauss, care ne determină suma numerelor de la 1 la n, cu formula n * (n + 1) / 2:

https://i.ibb.co/b24hThv/image.png

Așadar, suma pe care o căutăm noi se poate rescrie ca și:

https://i.ibb.co/yyFKVwy/image.png

Prin urmare, trebuie doar să calculăm cele două sume Gauss (de la 1 la y și de la 1 la x - 1), după care să o scădem pe a doua din prima.

Implementare în C++

Codul arată cam așa:

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim capetele intervalului dat
    int x, y;
    cin >> x >> y;

    //Calculăm și afișăm suma numerelor naturale din intervalul [x; y]
    int sumaNr = y * (y + 1) / 2 - (x - 1) * x / 2;
    cout << sumaNr;
    return 0;
}

Alte resurse și bibliografie

DS

Autorul acestei lecții

Dominic Satnoianu

Această lecție a fost redactată de către Dominic Satnoianu.

© 2021 – 2025 Aspire Education Labs SRL. Toate drepturile rezervate.

Așa cum este specificat și în termeni și condiții, conținutul acestei pagini este protejat de legea drepturilor de autor și este interzisă copierea sau modificarea acestuia fără acordul scris al autorilor.

Încălcarea drepturilor de autor este o infracțiune și se pedepsește conform legii.

Comentarii 0

Autentifică-te pentru a putea comenta.

Autentifică-te