0389 - Divizori Pari Interval
Cerinţa[edit | edit source]
Se dau două numere naturale numar1 și numar2. Să se determine cel mai mic și cel mai mare număr din intervalul [numar1,numar2] cu număr maxim de divizori pari şi numărul maxim de divizori pari.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele numar1 și numar2.
Date de ieşire[edit | edit source]
Programul afișează pe ecran numerele nr_divizori_pari min_numar max_numar, separate prin exact un spațiu , reprezentând numărul maxim de divizori pari ai numerelor din [numar1,numar2], cel mai mic şi respectiv cel mai mare număr din interval cu număr maxim de divizori pari.
Restricții și precizări[edit | edit source]
- numar ∈ Ν
- 0 ⩽ numar1 ⩽ numar2 ⩽ 1.000.000.000
- numar2 - numar1 ⩽ 1.000
Exemplu[edit | edit source]
- Intrare
- 10 20
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 4 12 20
Explicație[edit | edit source]
Numărul maxim de divizori pari pentru numerele din intervalul [10,20] este 4. Numerele din interval cu 4 divizori pari sunt 12, 16 şi 20.
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) < int(numar2) <= 1_000_000_000 and int(numar2) - int(numar1) <= 1000: flag = True
return flag
def numar_divizori_pari(divizori_pari):
count = 0 for divizor in range(1, divizori_pari+1): if divizori_pari % divizor == 0 and divizor % 2 == 0: count += 1 return count
def maxim_divizori_pari(numar1, numar2):
max_divizori = 0 min_numar = 0 max_numar = 0 for numar in range(int(numar1), int(numar2)+1): divizori_pari = numar_divizori_pari(numar) if divizori_pari > max_divizori: max_divizori = divizori_pari min_numar = numar max_numar = numar elif divizori_pari == max_divizori: max_numar = numar return max_divizori, min_numar, max_numar
if __name__ == "__main__":
numar1 = input() numar2 = input() if validare_date(numar1, numar2): nr_divizori_pari, min_numar, max_numar = maxim_divizori_pari(int(numar1), int(numar2)) print("\nDatele de intrare corespund restricțiilor impuse.\n") print(f"{nr_divizori_pari} {min_numar} {max_numar}") else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>
Explicație[edit | edit source]
Acest program primește ca intrare două numere naturale (numar1 și numar2) și calculează numărul maxim de divizori pari ai unui număr din intervalul [numar1, numar2] și afișează numărul maxim de divizori pari și cele două numere care au acest număr maxim de divizori pari. Programul include funcțiile validare_date, numar_divizori_pari și maxim_divizori_pari.