0908 - AfisareNumerePrime: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==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. ==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â...
 
 
(5 intermediate revisions by 2 users not shown)
Line 3: Line 3:
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.
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==
==Restricții de precizări==
Line 13: Line 19:


==Exemplu==
==Exemplu==
 
;Intrare
Dacă '''a=7''' și '''b=2''', apelul subprogramului va afișa pe ecran:
:7
 
:2
2 3 5 7
;Ieșire
 
:Datele de intrare corespund restrictiilor impuse.
:2 3 5 7


==Important==
==Important==
Line 27: 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):
    """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):
def afisare(a, b):
     # declaram o lista goala pentru a stoca numerele prime gasite
     """Afișează numerele prime cuprinse între a și b"""
     primes = []
     if a >= b:
   
        a, b = b, a
    # iteram prin toate numerele de la a la b inclusiv
     for n in range(a, b + 1):
     for num in range(a, b+1):
         if este_prim(n):
        # verificam daca numarul este mai mare decat 1
             print(n, end=' ')
         if num > 1:
 
             is_prime = True
 
            # verificam daca numarul este prim
def validare(a, b):
            for i in range(2, int(num ** 0.5) + 1):
    """Verifică dacă a și b sunt în intervalul specificat"""
                if num % i == 0:
    if int(a) <= 0 or int(b) <= 0 or int(a) > 1000 or int(b) > 1000:
                    is_prime = False
        return False
                    break
     return True
            # daca numarul este prim, il adaugam la lista de numere prime
 
            if is_prime:
                primes.append(num)
      
    # afisam lista de numere prime folosind argumentul special * pentru a afisa fiecare element din lista separat prin spatiu
    print(*primes)


if __name__ == '__main__':
if __name__ == '__main__':
    # citim valorile pentru a si b de la tastatura
     a = input("Introduceti valoarea pentru a: ")
     a = int(input("Introduceti valoarea pentru a: "))
     b = input("Introduceti valoarea pentru b: ")
     b = int(input("Introduceti valoarea pentru b: "))
     if validare(a, b):
      
        a, b = int(a), int(b)
    # verificam daca valorile pentru a si b sunt valide (intre 1 si 1000)
         print("Datele de intrare corespund restrictiilor impuse.")
    if a <= 0 or b <= 0 or a > 1000 or b > 1000:
        afisare(a, b)
         print("a si b trebuie sa fie numere intre 1 si 1000")
     else:
     else:
         # apelam functia afisare cu valorile a si b
         print("Datele de intrare nu corespund restrictiilor impuse.")
        afisare(a, b)
 
</syntaxhighlight>
 
==Explicații==
 
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).


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

Latest revision as of 17:10, 6 May 2023

Cerință[edit]

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

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

Date de ieșire[edit]

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

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

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

Important[edit]

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

Rezolvare ver. 1[edit]

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

Explicații[edit]

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.