Informatică, întrebare adresată de alexandrumije, 9 ani în urmă

2424 EasyRow
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
Exemplu:
Intrare

5
Ieșire

10
pls rapid

Răspunsuri la întrebare

Răspuns de alexandrumorus
2

#include <iostream>

using namespace std;

int main()

{

   int n, p=0;

   cin >> n;

   for(int i=1;i<=n;i++)

   {

       int no_div=0, j=1;

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

           if(i%j==0)

               no_div+=2;

       if(j*j==i)

           ++no_div;

       p+=no_div;

   }

   cout << p;

   return 0;

}

Răspuns de Dilau420
0

#include <iostream>

using namespace std;

int nrdiv(int num)

{

   int nr = 0, j = 1;

   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