0389 - Divizori Pari Interval: Difference between revisions
Robert Manc (talk | contribs) No edit summary |
Robert Manc (talk | contribs) No edit summary |
||
Line 13: | Line 13: | ||
: 10 20 | : 10 20 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 4 12 20 | : 4 12 20 | ||
== Explicație == | == Explicație == |
Revision as of 10:22, 11 April 2023
Cerinţa
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
Programul citește de la tastatură numerele numar1 și numar2.
Date de ieşire
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
- numar ∈ Ν
- 0 ⩽ numar1 ⩽ numar2 ⩽ 1.000.000.000
- numar2 - numar1 ⩽ 1.000
Exemplu
- Intrare
- 10 20
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 4 12 20
Explicație
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
<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>