# PBinfo #3324 – eratostene0 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Cerința
Vi se dau n perechi de numere naturale (i, j), cu i ≤ j. Pentru fiecare pereche trebuie să aflați suma divizorilor tuturor numerelor din șirul i, i + 1, ..., j.

Date de intrare
Fișierul de intrare eratostene0.in conține pe prima linie numărul n, iar pe următoarele n linii câte două numere naturale i1 j1, i2 j2, …, in jn.

Date de ieșire
Fișierul de ieșire eratostene0.out va conține n linii, pe fiecare linie L, L = 1..n, aflându-se un singur număr natural reprezentând suma divizorilor tuturor numerelor corespunzătoare perechii iL jL.

Restricții și precizări

1 ≤ n ≤ 200.000
1 ≤ i ≤ j ≤ 1.000.000

Exemplu:
eratostene0.in

4
1 6
3 7
2 5
8 8
eratostene0.out

33
37
20
15
Explicație
1 are suma divizorilor 1.
2 are suma divizorilor 3.
3 are suma divizorilor 4.
4 are suma divizorilor 7.
5 are suma divizorilor 6.
6 are suma divizorilor 12.
7 are suma divizorilor 8.
8 are suma divizorilor 15.

Pentru perechea 1 6 trebuie să aflăm suma divizorilor tuturor numerelor din șirul 1,2,3,4,5,6. Această sumă este 33.
Pentru perechea 3 7 trebuie să aflăm suma divizorilor tuturor numerelor din șirul 3,4,5,6,7. Această sumă este 37.
Pentru perechea 2 5 trebuie să aflăm suma divizorilor tuturor numerelor din șirul 2,3,4,5. Această sumă este 20.
Pentru perechea 8 8 trebuie să aflăm suma divizorilor tuturor numerelor din șirul format doar din 8. Această sumă este 15.

## Cod sursă C++

```cpp
#include <fstream>
using namespace std;
ifstream in("eratostene0.in");
ofstream out("eratostene0.out");
long long int v[1000001], n;
int main() {
    int i, j;
    for (i = 1; i <= 1000000; i++)
        for (j = i; j <= 1000000; j = j + i)
            v[j] = v[j] + i;
    for (i = 2; i <= 1000000; i++)
        v[i] = v[i] + v[i - 1];
    in >> n;
    while (n--) {
        in >> i >> j;
        out << (v[j] - v[i - 1]) << "\n";
    } return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3324)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3324/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3324/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
