0058 - CMMDC: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
Line 45: Line 45:


</syntaxhighlight>
</syntaxhighlight>
== Explicație ==
Acest cod primește două numere întregi de la utilizator și verifică dacă acestea sunt valide înainte de a calcula CMMDC (cel mai mare divizor comun) folosind algoritmul lui Euclid. Verificarea validității se face prin verificarea dacă ambele numere sunt numere întregi și dacă sunt cuprinse între 0 și 1.000.000.000. În cazul în care ambele numere sunt egale cu 0, se va afișa -1, altfel se va afișa CMMDC-ul lor.

Latest revision as of 15:36, 28 April 2023

Cerinţa[edit]

Să se scrie un program care să determine cel mai mare divizor comun a două numere naturale citite de la tastatură.

Date de intrare[edit]

Programul citește de la tastatură două numere naturale numar1 și numar2.

Date de ieşire[edit]

Programul afișează pe ecran numărul cmmdc, cel mai mare divizor comun al numerelor numar1 și numar2.

Restricții și precizări[edit]

  • numar1, numar2 ∈ Ν
  • 0 ⩽ numar1, numar2 ⩽ 1.000.000.000
  • dacă ambele numere sunt egale cu 0 se va afișa valoarea -1

Exemplu[edit]

Intrare
24 36
Ieșire
Datele de intrare corespund restricțiilor impuse.
12

Rezolvare[edit]

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

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


def CMD(numar1, numar2):

   while numar2:
       r = numar1 % numar2
       numar1, numar2 = numar2, r
   cmmdc = numar1
   return cmmdc


if __name__ == '__main__':

   numar1, numar2 = input().split()
   if validare_date(numar1, numar2):
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
       if int(numar1) == int(numar2) == 0:
           print("-1")
       else:
           print(CMD(int(numar1), int(numar2)))
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>

Explicație[edit]

Acest cod primește două numere întregi de la utilizator și verifică dacă acestea sunt valide înainte de a calcula CMMDC (cel mai mare divizor comun) folosind algoritmul lui Euclid. Verificarea validității se face prin verificarea dacă ambele numere sunt numere întregi și dacă sunt cuprinse între 0 și 1.000.000.000. În cazul în care ambele numere sunt egale cu 0, se va afișa -1, altfel se va afișa CMMDC-ul lor.