0305 - CMMDC N

De la Universitas MediaWiki

Cerinţa

Se dau n numere naturale nenule. Calculaţi cel mai mare divizor comun al lor.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.

Date de ieşire

Programul afișează pe ecran numărul cmmdcn, reprezentând cel mai mare divizor comun al celor n numere citite.

Restricții și precizări

  • n ∈ Ν
  • 1 ⩽ n ⩽ 1.000
  • cele n numere citite vor avea cel mult 9 cifre

Exemplu1

Intrare
4
18 54 24 42
Ieșire
Datele de intrare corespund restricțiilor impuse.
6

Exemplu2

Intrare
5
12 156 60 24 96
Ieșire
Datele de intrare corespund restricțiilor impuse.
12

Rezolvare

def validare_date(numar, numere):
    if 1 <= numar <= 1000:
        return all(isinstance(x, int) and 0 <= x < 1000000000 for x in numere)
    return False


def cmmdc(numar1, numar2):
    while numar2 != 0:
        rest = numar1 % numar2
        numar1 = numar2
        numar2 = rest
    return numar1


def cmmdc_multiplu(numere):
    cmmdcn = numere[0]
    for i in range(1, len(numere)):
        cmmdcn = cmmdc(cmmdcn, numere[i])
    return cmmdcn


if __name__ == '__main__':
    n = int(input())
    numere = list(map(int, input().split()))
    if validare_date(n, numere):
        print("\nDatele de intrare corespund restricțiilor impuse.\n")
        print(cmmdc_multiplu(numere))
    else:
        print("Datele de intrare nu corespund restrictiilor impuse.")

Explicație

Programul calculează cel mai mare divizor comun (CMMDC) al unui număr de numere. Funcția validare_date verifică dacă numărul de numere și fiecare număr în parte respectă anumite restricții, în timp ce funcția cmmdc calculează CMMDC folosind algoritmul Euclid. Funcția cmmdc_multiplu este folosită pentru a calcula CMMDC pentru mai multe numere simultan. Dacă toate datele de intrare sunt valide, codul afișează CMMDC-ul.