3308 - N Div Tri: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Șirul numerelor triunghiulare e obținut prin adunarea numerelor naturale. Deci al șaptelea număr triunghiular e '''1 + 2 + 3 + 4 + 5 + 6 + 7 = 28'''. Primii '''10''' termeni din șir sunt: '''1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...''' Să listăm toți divizorii primelor '''7''' numere triunghiulare: '''1: 1 3: 1,3 6: 1,2,3,6 10: 1,2,5,10 15: 1,3,5,15 21: 1,3,7,21 28: 1,2,4,7,14,28''' Se poate observa că '''28''' e primul număr triunghiular care are...
 
 
Line 2: Line 2:
Șirul numerelor triunghiulare e obținut prin adunarea numerelor naturale. Deci al șaptelea număr triunghiular e '''1 + 2 + 3 + 4 + 5 + 6 + 7 = 28'''. Primii '''10''' termeni din șir sunt: '''1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...'''
Șirul numerelor triunghiulare e obținut prin adunarea numerelor naturale. Deci al șaptelea număr triunghiular e '''1 + 2 + 3 + 4 + 5 + 6 + 7 = 28'''. Primii '''10''' termeni din șir sunt: '''1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...'''
Să listăm toți divizorii primelor '''7''' numere triunghiulare:
Să listăm toți divizorii primelor '''7''' numere triunghiulare:
'''1: 1
    1: 1
3: 1,3
    3: 1,3
6: 1,2,3,6
    6: 1,2,3,6
10: 1,2,5,10
  10: 1,2,5,10
15: 1,3,5,15
  15: 1,3,5,15
21: 1,3,7,21
  21: 1,3,7,21
28: 1,2,4,7,14,28'''
  28: 1,2,4,7,14,28


Se poate observa că '''28''' e primul număr triunghiular care are mai mult de '''5''' divizori.
Se poate observa că '''28''' e primul număr triunghiular care are mai mult de '''5''' divizori.
Se dă un număr natural '''n'''. Să se scrie un program care determină '''primul număr triunghiular''' cu mai mult de '''n''' divizori.
Se dă un număr natural '''n'''. Să se scrie un program care determină '''primul număr triunghiular''' cu mai mult de '''n''' divizori.
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul natural '''n'''.
Programul citește de la tastatură numărul natural '''n'''.

Latest revision as of 12:24, 9 May 2023

Cerinţa[edit | edit source]

Șirul numerelor triunghiulare e obținut prin adunarea numerelor naturale. Deci al șaptelea număr triunghiular e 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. Primii 10 termeni din șir sunt: 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... Să listăm toți divizorii primelor 7 numere triunghiulare:

   1: 1
   3: 1,3
   6: 1,2,3,6
  10: 1,2,5,10
  15: 1,3,5,15
  21: 1,3,7,21
  28: 1,2,4,7,14,28

Se poate observa că 28 e primul număr triunghiular care are mai mult de 5 divizori. Se dă un număr natural n. Să se scrie un program care determină primul număr triunghiular cu mai mult de n divizori.

Date de intrare[edit | edit source]

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

Date de ieşire[edit | edit source]

Programul afișează pe ecran numărul x, reprezentând primul număr triunghiular care are mai mult de n divizori.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1000

Exemplu[edit | edit source]

Intrare
3
Ieșire
6

Explicație[edit | edit source]

Primul număr trunghiular care are mai mult de 3 divizori este 6.

Exemplu 2[edit | edit source]

Intrare
1
Ieșire
3

Explicație[edit | edit source]

Primul număr trunghiular care are mai mult de un divizor este 3.

Exemplu 3[edit | edit source]

Intrare
133
Ieșire
437580

Explicație[edit | edit source]

Primul număr trunghiular care are mai mult de 133 de divizori este 437580.

Rezolvare[edit | edit source]

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

   numar = 0
   for i in range(1, int(n**0.5)+1):
       if n % i == 0:
           if n/i == i:
               numar += 1
           else:
               numar += 2
   return numar


def validare_date(n):

   if n.isdigit() and 1 <= int(n) <= 1000:
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
       return True
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")
       return False


if __name__ == '__main__':

   n = input("Introduceti n: ")
   if validare_date(n):
       numar = 1
       index = 2
       while numar_divizori(numar) <= int(n):
           numar += index
           index += 1
       print("Primul număr triunghiular cu mai mult de", n, "divizori este:", numar)


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest program găsește primul număr triunghiular care are mai mult de n divizori. Folosind o buclă while, programul calculează numerele triunghiulare și numără divizorii acestora până când se găsește primul număr triunghiular care are mai mult de n divizori. Pentru a se asigura că datele de intrare sunt valide, programul include o funcție care verifică dacă n se află în intervalul specificat.