0044 - Prime Interval
Cerinţa
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
Programul citește de la tastatură numerele numar1 și numar2.
Date de ieşire
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
- 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
- Intrare
- 10 20
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 4
Explicație
În intervalul [10,20] sunt 4 numere prime: 11, 13, 17, 19.
Exemplu2
- Intrare
- 5 17
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 5
Explicație
În intervalul [5,17] sunt 5 numere prime: 5, 7, 11, 13, 17.
Rezolvare
<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
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.