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[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.