0058 - CMMDC: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Să se scrie un program care să determine cel mai mare divizor comun a două numere naturale citite de la tastatură. == Date de intrare == Programul citește de la tastatură două numere naturale '''numar1''' și '''numar2'''. == Date de ieşire == Programul afișează pe ecran numărul '''cmmdc''', cel mai mare divizor comun al numerelor '''numar1''' și '''numar2'''. == Restricții și precizări == * numar1, numar2 ∈ Ν * 0 ⩽ numar1, numar2 &le...
 
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 7: Line 7:
== Restricții și precizări ==
== Restricții și precizări ==
* numar1, numar2 ∈ Ν
* numar1, numar2 ∈ Ν
* 0 ⩽ numar1, numar2 ⩽ 100.000
* 0 ⩽ numar1, numar2 ⩽ 1.000.000.000
* dacă ambele numere sunt egale cu '''0''' se va afișa valoarea '''-1'''
* dacă ambele numere sunt egale cu '''0''' se va afișa valoarea '''-1'''
== Exemplu ==
== Exemplu ==
Line 13: Line 13:
: 24 36
: 24 36
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 12
: 12
== Rezolvare ==
== Rezolvare ==
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 | edit source]

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 | edit source]

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

Date de ieşire[edit | edit source]

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

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

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

Exemplu[edit | edit source]

Intrare
24 36
Ieșire
Datele de intrare corespund restricțiilor impuse.
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) <= 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 | edit source]

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.