1981 - Divizori sir

From Bitnami MediaWiki
Revision as of 18:53, 24 October 2023 by Zmicala Narcis (talk | contribs) (Pagină nouă: == 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 dint...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 are un divizor,
  • 3 are 2 divizori,
  • 9 are 3 divizori,
  • 25 are 3 divizori.

<syntaxhighlight lang="python" line> def numar_divizori(n):

   # Initializam sirul de numere
   sir = [2, 4]
   # Generam primii n termeni ai sirului
   for i in range(2, n):
       sir.append(2 * sir[i - 1] + 2 * sir[i - 2])
   # Calculam numarul de divizori pentru fiecare termen al sirului
   divizori = [len(set(i for i in range(1, int(x**0.5) + 1) if x % i == 0)) for x in sir]
   return divizori

if __name__ == "__main__":

   # Citim datele de intrare
   n = int(input())
   # Calculam numarul de divizori
   rezultat = numar_divizori(n)
   # Afisam rezultatul
   print(' '.join(map(str, rezultat)))

</syntaxhighlight>