0908 - AfisareNumerePrime: Difference between revisions

From Bitnami MediaWiki
Line 34: Line 34:
===Rezolvare ver. 1===
===Rezolvare ver. 1===
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
def este_prim(n):
def este_prim(n):
     """Verifică dacă un număr dat este prim"""
     """Verifică dacă un număr dat este prim"""
     if n < 2:
     if n < 2:
         return False
         return False
     for i in range(2, int(n**0.5)+1):
     for i in range(2, int(n ** 0.5) + 1):
         if n % i == 0:
         if n % i == 0:
             return False
             return False
     return True
     return True


def afisare(a, b):
def afisare(a, b):
     """Afișează numerele prime cuprinse între a și b"""
     """Afișează numerele prime cuprinse între a și b"""
     for n in range(a, b+1):
    if a >= b:
        a, b = b, a
     for n in range(a, b + 1):
         if este_prim(n):
         if este_prim(n):
             print(n, end=' ')
             print(n, end=' ')
    print()  # trecem pe o noua linie
 


def validare(a, b):
def validare(a, b):
     """Verifică dacă a și b sunt în intervalul specificat"""
     """Verifică dacă a și b sunt în intervalul specificat"""
     if a <= 0 or b <= 0 or a > 1000 or b > 1000:
     if int(a) <= 0 or int(b) <= 0 or int(a) > 1000 or int(b) > 1000:
         return False
         return False
     return True
     return True


def main():
 
     a = int(input("Introduceti valoarea pentru a: "))
if __name__ == '__main__':
     b = int(input("Introduceti valoarea pentru b: "))
     a = input("Introduceti valoarea pentru a: ")
     b = input("Introduceti valoarea pentru b: ")
     if validare(a, b):
     if validare(a, b):
        a, b = int(a), int(b)
        print("Datele de intrare corespund restrictiilor impuse.")
         afisare(a, b)
         afisare(a, b)
     else:
     else:
         print("Valorile introduse nu sunt valide. A și b trebuie să fie între 1 și 1000.")
         print("Datele de intrare nu corespund restrictiilor impuse.")
 
if __name__ == '__main__':
    main()
 


</syntaxhighlight>
</syntaxhighlight>

Revision as of 17:10, 6 May 2023

Cerință

Scrieți definiția completă a funcției Python afisare care primește doi parametri a și b și afișează pe ecran, în ordine crescătoare, numerele naturale prime cuprinse între a și b, inclusiv acestea.

Date de intrare

Se citesc de la tastatură doi parametri întregi a și b, unde 0 < a, b <= 1000.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Nici o valoare de returnare. Funcția va afișa, pe o singură linie, numerele naturale prime cuprinse între a și b, în ordine crescătoare, separate prin câte un spațiu. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse.".

Restricții de precizări

  • numele funcției va fi afisare
  • funcția va avea exact doi parametri: a, respectiv b
  • 0 < a , b <= 1000
  • numerele vor fi afișate pe aceeași linie, separate prin câte un spațiu


Exemplu

Intrare
7
2
Ieșire
Datele de intrare corespund restrictiilor impuse.
2 3 5 7

Important

Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1"> def este_prim(n):

   """Verifică dacă un număr dat este prim"""
   if n < 2:
       return False
   for i in range(2, int(n ** 0.5) + 1):
       if n % i == 0:
           return False
   return True


def afisare(a, b):

   """Afișează numerele prime cuprinse între a și b"""
   if a >= b:
       a, b = b, a
   for n in range(a, b + 1):
       if este_prim(n):
           print(n, end=' ')


def validare(a, b):

   """Verifică dacă a și b sunt în intervalul specificat"""
   if int(a) <= 0 or int(b) <= 0 or int(a) > 1000 or int(b) > 1000:
       return False
   return True


if __name__ == '__main__':

   a = input("Introduceti valoarea pentru a: ")
   b = input("Introduceti valoarea pentru b: ")
   if validare(a, b):
       a, b = int(a), int(b)
       print("Datele de intrare corespund restrictiilor impuse.")
       afisare(a, b)
   else:
       print("Datele de intrare nu corespund restrictiilor impuse.")

</syntaxhighlight>

Explicatii

Acest cod definește o funcție afisare care primește doi parametri întregi a și b și afișează numerele prime cuprinse între a și b, inclusiv acestea, pe o singură linie, separate prin câte un spațiu. Pentru a verifica dacă un număr este prim, este definită și o funcție separată este_prim.

Pentru a preveni erori, a fost definită o funcție suplimentară validare care verifică dacă valorile introduse pentru a și b sunt în intervalul specificat (1 ≤ a, b ≤ 1000).

În funcția main, utilizatorul este întâi întrebat să introducă valorile pentru a și b. Dacă valorile sunt valide, funcția afisare este apelată pentru a afișa numerele prime. Altfel, un mesaj de eroare este afișat pentru a informa utilizatorul că valorile introduse nu sunt valide.