0389 - Divizori Pari Interval: Difference between revisions
Robert Manc (talk | contribs) No edit summary |
Robert Manc (talk | contribs) No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
Programul citește de la tastatură numerele '''numar1''' și '''numar2'''. | Programul citește de la tastatură numerele '''numar1''' și '''numar2'''. | ||
== Date de ieşire == | == Date de ieşire == | ||
Programul afișează pe ecran numerele ''' | 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 == | == Restricții și precizări == | ||
* numar ∈ Ν | * numar ∈ Ν | ||
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 == | ||
Line 21: | Line 21: | ||
def validare_date(numar1, numar2): | def validare_date(numar1, numar2): | ||
flag = False | flag = False | ||
if numar1.isdigit() and numar2.isdigit(): | if numar1.isdigit() and numar2.isdigit(): | ||
if 0 < int(numar1) < int(numar2) <= 1_000_000_000 and int(numar2) - int(numar1) <= 1000: | if 0 < int(numar1) < int(numar2) <= 1_000_000_000 and int(numar2) - int(numar1) <= 1000: | ||
Line 28: | Line 27: | ||
return flag | return flag | ||
def numar_divizori_pari( | |||
def numar_divizori_pari(divizori_pari): | |||
count = 0 | count = 0 | ||
for divizor in range(1, | for divizor in range(1, divizori_pari+1): | ||
if | if divizori_pari % divizor == 0 and divizor % 2 == 0: | ||
count += 1 | count += 1 | ||
return count | return count | ||
def maxim_divizori_pari(numar1, numar2): | def maxim_divizori_pari(numar1, numar2): | ||
Line 53: | Line 54: | ||
numar1 = input() | numar1 = input() | ||
numar2 = input() | numar2 = input() | ||
if validare_date(numar1, numar2): | 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("\nDatele de intrare corespund restricțiilor impuse.\n") | ||
print(f"{ | print(f"{nr_divizori_pari} {min_numar} {max_numar}") | ||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicație == | |||
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. |
Latest revision as of 09:57, 25 April 2023
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.