Informatică, întrebare adresată de Diuva, 8 ani în urmă


Cerința
Se consideră următorul șir de numere naturale: 1 3 5 8 10 14 16..., în care termenul de pe poziția i (i > 1) este egal cu cel precedent plus numărul de divizori ai lui i. Afișați al n-lea termen.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran numărul x, reprezentând al n-lea termen din șir.

Restricții și precizări
1 ≤ n ≤ 100.000

Răspunsuri la întrebare

Răspuns de boiustef
6

#include <iostream>

using namespace std;

int nrdiv(int num)

{

   int nr=0, j;

   for (j=1; j*j<num; ++j)

       if (num%j==0) nr+=2;

   if (j*j==num) ++nr;

   return nr;

}

int main()

{

   int n, indtermen, xn=1;

   cin >> n;

   for (indtermen=2; indtermen<=n; ++indtermen)

       xn = xn + nrdiv(indtermen);

   cout << xn;

   return 0;

}


Alte întrebări interesante