0061 - Afisare Divizori Comuni

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Să se scrie un program care afișează divizorii comuni ai două numere naturale citite de la tastatură

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele numar1 și numar2.

Date de ieşire[edit | edit source]

Programul afișează pe ecran, în ordine crescătoare, divizorii comuni ai numerelor numar1 și numar2, separați printr-un spațiu.

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

  • numar ∈ Ν
  • 0 < numar1, numar2 < 1.000.000.000

Exemplu[edit | edit source]

Intrare
24 36
Ieșire
Datele de intrare corespund restricțiilor impuse.
1 2 3 4 6 12

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def validare_date(numar1, numar2):

   flag = False
   if numar1.isdigit() and numar2.isdigit():
       if 0 < int(numar1) < int(numar2) <= 1_000_000_000:
           flag = True
   return flag


def divizori_comuni(numar1, numar2):

   divizori = []
   for i in range(1, min(numar1, numar2) + 1):
       if numar1 % i == 0 and numar2 % i == 0:
           divizori.append(i)
   return divizori


if __name__ == "__main__":

   numar1 = input()
   numar2 = input()
   if validare_date(numar1, numar2):
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
       divizori = divizori_comuni(int(numar1), int(numar2))
       for divizor in divizori:
           print(divizor, end=" ")
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>

Explicație[edit | edit source]

Programul citește două numere întregi de la utilizator și afișează divizorii comuni ai acestora. În primul rând, funcția validare_date() validează datele introduse de utilizator, verificând dacă acestea sunt numere întregi și dacă se încadrează în intervalul 1 - 1.000.000.000. Funcția divizori_comuni() primește cele două numere întregi și returnează o listă cu divizorii comuni ai celor două numere, prin parcurgerea tuturor numerelor întregi între 1 și cel mai mic dintre cele două numere și verificarea dacă acestea sunt divizori ai ambelor numere. Dacă datele de intrare nu sunt valide, programul afișează un mesaj corespunzător.