0044 - Prime Interval

From Bitnami MediaWiki
Revision as of 16:36, 28 April 2023 by Robert Manc (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.