0044 - Prime Interval
Cerinţa[edit | edit source]
Să se scrie un program care citește două numere naturale numar1 și numar2 și determină câte numere prime sunt în intervalul închis determinat de numar1 și numar2.
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 numărul numere_prime, reprezentând numărul de numere prime din intervalul închis determinat de numar1 și numar2.
Restricții și precizări[edit | edit source]
- numar1, numar2 ∈ Ν
- 0 < numar1, numar2 < 100.000
- numerele citite nu respectă obligatoriu relația numar1 ≤ numar2
- un număr natural este prim dacă are exact doi divizori distincți: 1 și el însuși.
Exemplu1[edit | edit source]
- Intrare
- 10 20
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 4
Explicație[edit | edit source]
În intervalul [10,20] sunt 4 numere prime: 11, 13, 17, 19.
Exemplu2[edit | edit source]
- Intrare
- 5 17
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 5
Explicație[edit | edit source]
În intervalul [5,17] sunt 5 numere prime: 5, 7, 11, 13, 17.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def validare_date(numar1, numar2):
flag = False if 0 < int(numar1) < 100_000 and 0 < int(numar2) < 100_000: flag = True return flag
def verif_prim(n):
if n <= 1: return False else: for i in range(2, int(n ** 0.5) + 1): if n % i == 0: return False else: return True
def numarare_prime(numar1, numar2):
if numar1 > numar2: numar1, numar2 = numar2, numar1 numere_prime = 0 for numar in range(numar1, numar2+1): if verif_prim(numar): numere_prime += 1 print(numere_prime)
if __name__ == '__main__':
numar1, numar2 = input().split() if validare_date(numar1, numar2): print("\nDatele de intrare corespund restrictiilor impuse.\n") numarare_prime(int(numar1), int(numar2)) else: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>
Explicație[edit | edit source]
Programul primește două numere de la tastatură și verifică dacă acestea se încadrează în limitele impuse de funcția validare_date. Dacă numerele sunt valide, programul numără câte numere prime sunt între cele două numere primite, folosind funcția numarare_prime. Pentru a număra numerele prime, se folosește funcția verif_prim, care primește un număr și returnează True dacă numărul este prim, sau False altfel.