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

Se dă următorul șir de numere naturale:

1, 3, 9, 25, 65, 161, 385, 897, 2049, 4609, 10241, 22529, 49153, 106497…

Pentru un număr natural n, citit de la tastatură, afișati numărul de divizori pentru fiecare dintre primii n termeni ai șirului.

Răspunsuri la întrebare

Răspuns de stassahul
8
#include <bits/stdc++.h>

using namespace std;

int n;

unsigned long long Count(unsigned long long a);

int main()
{

    cin >> n;

    for(unsigned long long i=0;i<n;i++)
    {
        unsigned long long nr=i*(1ULL<<i)+1;
            cout << Count(nr) << " ";
    }

    return 0;
}

unsigned long long Count(unsigned long long a)
{
   unsigned long long count = 1, k = 0, i;
   if (a == 1 || a == 2)
      return a;
   while ((a & 1) == 0)
   {
      k++;
      a >>= 1;
   }
   if (a == 1)
      return k + 1;
   else
      count = k + 1;
   for(i = 3; i*i <= a; i += 2)
   {
      k = 0;
      while(a % i == 0)
      {
         k++;
         a /= i;
      }
      count *= (k + 1);
   }
   if (a > 1)
      count <<= 1;
   return count;
}

saracpopa: Multumesc mult!!!!!
Alte întrebări interesante