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
3355 - Factori 4
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ţa == Se dau '''n''' numere naturale. Determinați cel mai mic număr care are un singur factor prim. Dacă nu există niciun număr cu un singur factor prim se va afișa mesajul '''NU EXISTA'''. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale. == Date de ieşire == Programul va afișa pe ecran numărul cerut. == Restricții și precizări == *'''1 ≤ n ≤ 1000''' *cele '''n''' numere citite vor fi mai mici decât '''1.000.000.000''' == Exemplu == ; Intrare :5 12 9 16 4 20 ; Ieșire :4 ==Explicație== Dintre numere citite au un factor prim numerele '''9 16 4'''. Dintre acestea cel mai mic este '''4'''. == Rezolvare == <syntaxhighlight lang="python" line> import math def validare_date(n, arr): if not isinstance(n, int) or n <= 0: return False if not isinstance(arr, list) or len(arr) != n or not all(isinstance(x, int) for x in arr): return False return True def ok(n): d, cnt = 2, 0 while n > 1: p = 0 while n % d == 0: n //= d p += 1 if p: cnt += 1 d += 1 if d * d > n: d = n return cnt == 1 if __name__ == '__main__': n = int(input("Introduceti numarul de elemente din lista: ")) arr = list(map(int, input("Introduceti lista de numere: ").split())) if validare_date(n, arr): mini = math.inf for x in arr: if ok(x) and x < mini: mini = x if mini < math.inf: print("Cel mai mic număr prim putere din listă este:", mini) else: print("Nu există niciun număr prim putere în listă.") else: print("Datele de intrare nu corespund restricțiilor impuse.") </syntaxhighlight> ==Explicație rezolvare== Acest cod primește o listă de numere întregi și găsește cel mai mic număr din listă care este un număr prim putere. Pentru a verifica dacă un număr este un număr prim putere, se calculează factorii primi ai numărului și se numără câți factori primi diferiți are. Dacă numărul de factori primi diferiți este 1, atunci numărul este o putere a unui număr prim. Codul începe prin a citi numărul de elemente din listă și lista însăși, utilizând funcția '''input() și list()'''. Apoi, se validează datele de intrare cu funcția '''validare_date()''', care verifică că n este un număr întreg pozitiv și că lista conține n numere întregi. După validarea datelor de intrare, se inițializează variabila '''mini''' cu o valoare foarte mare. Se parcurge lista cu un '''for loop''', și pentru fiecare element se verifică dacă este un număr prim putere cu ajutorul funcției '''ok()'''. Dacă numărul este un număr prim putere și este mai mic decât valoarea actuală a lui '''mini''', atunci acesta devine noul mini. La final, se verifică dacă '''mini''' a fost actualizat. Dacă da, atunci se afișează cel mai mic număr prim putere din listă, altfel 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