0044 - Prime Interval

From Bitnami MediaWiki
Revision as of 15:19, 11 April 2023 by Robert Manc (talk | contribs) (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'''...)
(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>