0245 - Nr Div Max

De la Universitas MediaWiki

Cerinţa

Se dă un număr natural numar. Să se determine numărul din intervalul [1,numar] care are număr maxim de divizori. Dacă există mai multe asemenea numere, se va afișa cel mai mic dintre ele.

Date de intrare

Programul citește de la tastatură un număr natural numit ”numar”.

Date de ieşire

Programul va afișa pe ecran valoarea cerută.

Restricții și precizări

  • numar ∈ Ν
  • 0 ⩽ numar ⩽ 100.000

Exemplu

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

Explicație

12, 18 şi 20 au număr maxim de divizori, dar 12 este cel mai mic.

Rezolvare

def validare_date(numar):
    flag = False
    if numar.isdigit():
        if 0 <= int(numar) <= 100_000:
            flag = True
    return flag


def nr_div_max(n):
    div_max = 0
    numar_max = 0
    for numar in range(1, n + 1):
        divizori = 0
        for i in range(1, numar + 1):
            if numar % i == 0:
                divizori += 1
        if divizori > div_max:
            div_max = divizori
            numar_max = numar
    print(numar_max)


if __name__ == '__main__':
    numar = input()
    if validare_date(numar):
        print("\nDatele de intrare corespund restricțiilor impuse.\n")
        nr_div_max(int(numar))
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")