0058 - CMMDC
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.