0044 - Prime Interval: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == 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'''...
 
No edit summary
 
Line 65: Line 65:


</syntaxhighlight>
</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.

Latest revision as of 16:36, 28 April 2023

Cerinţa[edit]

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]

Programul citește de la tastatură numerele numar1 și numar2.

Date de ieşire[edit]

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]

  • 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]

Intrare
10 20
Ieșire
Datele de intrare corespund restricțiilor impuse.
4

Explicație[edit]

În intervalul [10,20] sunt 4 numere prime: 11, 13, 17, 19.

Exemplu2[edit]

Intrare
5 17
Ieșire
Datele de intrare corespund restricțiilor impuse.
5

Explicație[edit]

În intervalul [5,17] sunt 5 numere prime: 5, 7, 11, 13, 17.

Rezolvare[edit]

<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]

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.