285
Cerința
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.
Date de intrare
Programul citește de la tastatură numărul n
;
Date de ieșire
Programul va afișa pe ecran cele n
numere, reprezentând numărul de divizori ai fiecarui numar dintre cele n
, separate prin spații.
Restricții și precizări
0 < n < 60
Exemplu
Intrare
4
Ieșire
1 2 3 3
Explicație
1
areun
divizor,3
are2
divizori,9
are3
divizori,25
are3
divizori.
#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; }
Comentarii