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
2547 - Divizori 3
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 citesc două numere naturale '''numar1''' și '''numar2''' ('''numar1 < numar2''') având cel mult '''9''' cifre fiecare. Afișați câte numere din intervalul '''[numar1, numar2]''' au exact '''3''' divizori. == Date de intrare == Programul citește de la tastatură numerele '''numar1''' și '''numar2''', separate printr-un spațiu. == Date de ieşire == Programul va afișa pe ecran numărul de numere din intervalul '''[numar1,numar2]'''care au exact '''3''' divizori. == Restricții și precizări == * '''1 ≤ numar1< numar2 < 1.000.000.000''' == Exemplu == ; Intrare : 11 50 ; Ieșire : 2 == Explicație == Numerele din intervalul '''[11,50]''' care au exact '''3''' divizori sunt '''25''' și '''49'''. == Rezolvare == <syntaxhighlight lang="python" line> def validare_date(numar1, numar2): flag = False if numar1.isdigit() and numar2.isdigit(): if 0 < int(numar1) < int(numar2) <= 1_000_000_000 and int(numar2) - int(numar1) <= 1000: flag = True return flag def numar_divizori(n): divizori = 0 for i in range(1, int(n**0.5) + 1): if n % i == 0: divizori += 2 if n // i == i: divizori -= 1 if divizori > 3: break return divizori == 3 def main(): numar1, numar2 = input().split() if validare_date(numar1, numar2): numar1 = int(numar1) numar2 = int(numar2) numar = 0 for i in range(numar1, numar2 + 1): if numar_divizori(i): numar += 1 print(numar) else: print("Datele de intrare nu corespund restricțiilor impuse.") if __name__ == "__main__": main() </syntaxhighlight> ==Explicație rezolvare== Acest cod Python are ca scop găsirea numărului de numere care au exact trei divizori, între două numere date. Funcția '''validare_date''' primește două numere sub formă de string și returnează o valoare booleană, '''True''' dacă cele două numere sunt valide și '''False''' dacă nu sunt. Pentru ca cele două numere să fie considerate valide, trebuie să fie numere întregi pozitive, cu o valoare cuprinsă între 1 și 1 miliard, iar diferența dintre cele două numere trebuie să fie mai mică sau egală cu 1000. Funcția '''numar_divizori''' primește un număr întreg pozitiv și returnează o valoare booleană, '''True''' dacă numărul are exact trei divizori și '''False''' dacă nu. Pentru a determina numărul de divizori, funcția parcurge toți divizorii numărului și îi numără. Dacă numărul de divizori ajunge la 3, atunci funcția returnează '''True''', în caz contrar, returnează '''False'''. Funcția '''main''' este funcția principală care este apelată la pornirea programului. Funcția primește de la utilizator două numere sub formă de '''string''', le validează folosind funcția '''validare_date''', le convertește la '''intregi''' și calculează numărul de numere care au exact trei divizori, apelând funcția '''numar_divizori'''. Numărul de astfel de numere este apoi afișat. În cazul în care datele introduse nu sunt valide, funcția afișează un mesaj de eroare. Astfel, acest program primește două numere de la utilizator și afișează numărul de numere care au exact trei divizori între aceste două numere.
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