0908 - AfisareNumerePrime: Difference between revisions
Vardai Erwin (talk | contribs) |
Vardai Erwin (talk | contribs) |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 19: | Line 19: | ||
==Exemplu== | ==Exemplu== | ||
;Intrare | |||
:7 | |||
:2 | |||
2 3 5 7 | ;Ieșire | ||
:Datele de intrare corespund restrictiilor impuse. | |||
:2 3 5 7 | |||
==Important== | ==Important== | ||
| Line 33: | 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=' ') | ||
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 | ||
a = | if __name__ == '__main__': | ||
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(" | print("Datele de intrare nu corespund restrictiilor impuse.") | ||
</syntaxhighlight> | </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. | 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. | ||
Latest 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>
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).
Î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.