Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
0912 - PrimeVecine
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Cerință== Să se scrie o funcție Python care, pentru un număr natural n transmis ca parametru, determină și întoarce prin intermediul unor parametri de ieșire cel mai mare număr prim mai mic decât n și cel mai mic număr prim mai mare decât n. ==Date de intrare== Se citește '''n''' un număr natural de la tastatură, '''3 ≤ n < 1.000.000.000''' ==Date de ieșire== Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa: *cel mai mare număr prim mai mic decât '''n''' *cel mai mic număr prim mai mare decât '''n''' În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse.". ==Restricții de precizări== *funcția va avea exact trei parametri, în această ordine: *primul parametru,''' n''', reprezintă un număr natural,''' 3 ≤ n < 1.000.000.000''' *'''a''' și '''b''' sunt parametrii prin care funcția va întoarce cele două valori cerute, astfel: *'''a''' este cel mai mare număr prim mai mic decât '''n''' *'''b''' este cel mai mic număr prim mai mare decât '''n''' ==Exemplu== ;Intrare :28 ;Ieșire :Datele introduse sunt corecte. :23 29. ==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 validare(n, a, b): return 3 <= int(n) <= 1_000_000_000 and a < int(n) and b > int(n) def get_prime_numbers(n, a, b): def is_prime(x): if x < 2: return False for i in range(2, int(x ** 0.5) + 1): if x % i == 0: return False return True for i in range(n - 1, 1, -1): if is_prime(i): a = i break i = n + 1 while True: if is_prime(i): b = i break i += 1 return a, b if __name__ == '__main__': n = int(input()) a, b = None, None a, b = get_prime_numbers(n, a, b) if validare(n, a, b): print("Datele introduse sunt corecte.") print(a, b, sep=" ") else: print("Datele introduse nu sunt corecte.") </syntaxhighlight> ==Explicatii== Această implementare Python definește o funcție get_prime_numbers(n, a, b) care primește ca parametri un număr natural n și două variabile a și b. Scopul acestei funcții este de a găsi cel mai mare număr prim mai mic decât n (valoarea va fi atribuită variabilei a) și cel mai mic număr prim mai mare decât n (valoarea va fi atribuită variabilei b). Funcția utilizează o funcție internă is_prime(x) pentru a verifica dacă un număr x este prim sau nu. Pentru a determina dacă x este prim, funcția is_prime(x) utilizează metoda clasică a verificării dacă x este divizibil cu orice număr întreg cuprins între 2 și rădăcina pătrată din x. Mai întâi, funcția get_prime_numbers(n, a, b) caută cel mai mare număr prim mai mic decât n. Acest lucru este realizat prin parcurgerea tuturor numerelor mai mici decât n, începând cu n-1, și verificând dacă fiecare număr este prim sau nu. Când se găsește primul număr prim, acesta este atribuit variabilei a și parcurgerea se oprește. În continuare, funcția caută cel mai mic număr prim mai mare decât n. Acest lucru este realizat prin parcurgerea tuturor numerelor mai mari decât n, începând cu n+1, și verificând dacă fiecare număr este prim sau nu. Când se găsește primul număr prim, acesta este atribuit variabilei b și parcurgerea se oprește. Funcția get_prime_numbers(n, a, b) returnează o tuplă cu cele două numere prime găsite: (a, b). Funcția validare(n, a, b) este apelată în scopul de a valida faptul că valorile returnate sunt corecte. Aceasta verifică dacă valorile respectă condițiile impuse în enunț, adică n este un număr natural cuprins între 3 și 1.000.000.000, iar a este mai mic decât n și b este mai mare decât n. Funcția returnează True dacă valorile sunt corecte și False altfel. În funcția principală (if __name__ == '__main__':), numărul n este inițializat cu o valoare și variabilele a și b sunt setate inițial la None. Apoi, se apelează funcția get_prime_numbers(n, a, b) pentru a găsi cele două numere prime. Dacă valorile returnate sunt corecte, se afișează cele două numere prime găsite. În caz contrar, se afișează un mesaj de eroare
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width