0020 - Suma divizorilor primi: Difference between revisions
Cuceu Andrei (talk | contribs) Pagină nouă: ==Cerință== Să se scrie o funcție Python care să determine suma divizorilor primi ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire. ==Restricții de precizări== *numele funcției va fi '''sum_div_prim''' *funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma divizorilor, respectiv valoarea calculată *numărul pentru care se calculează suma divizorilor primi va f... |
Vardai Erwin (talk | contribs) No edit summary |
||
Line 2: | Line 2: | ||
Să se scrie o funcție Python care să determine suma divizorilor primi ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire. | Să se scrie o funcție Python care să determine suma divizorilor primi ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire. | ||
==Restricții de precizări== | ==Restricții de precizări== | ||
Line 10: | Line 8: | ||
*funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma divizorilor, respectiv valoarea calculată | *funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma divizorilor, respectiv valoarea calculată | ||
*numărul pentru care se calculează suma divizorilor primi va fi mai mare decât '''1''' și mai mic decât '''2.000.000.000''' | *numărul pentru care se calculează suma divizorilor primi va fi mai mare decât '''1''' și mai mic decât '''2.000.000.000''' | ||
==Date de intrare== | |||
Numărul '''n'''. | |||
==Date de ieșire== | |||
Dacă datele de intrare sunt corecte, apare mesajul '''Datele de intrare sunt corecte.''' și se returnează valoarea cerută, în caz contrar '''Datele de intrare sunt incorecte.'''. | |||
==Exemplu== | |||
===Exemplul 1=== | |||
====Date de intrare==== | |||
1234 | |||
====Date de ieșire==== | |||
'''Datele de intrare sunt corecte.''' și valoarea returnată va fi 619. | |||
Line 20: | Line 32: | ||
===Rezolvare ver. 1=== | ===Rezolvare ver. 1=== | ||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
def sum_div_prim(numar, suma=0): | |||
def sum_div_prim(numar | for i in range(2, numar + 1): | ||
for i in range(2, numar+1): | |||
if numar % i == 0: | if numar % i == 0: | ||
este_prim = True | este_prim = True | ||
for j in range(2, int(i**0.5)+1): | for j in range(2, int(i ** 0.5) + 1): | ||
if i % j == 0: | if i % j == 0: | ||
este_prim = False | este_prim = False | ||
Line 35: | Line 45: | ||
if __name__ == '__main__': | |||
numar = input() | |||
if (numar.isdigit() and 1 <= int(numar) <= 2_000_000_000): | |||
print("Datele de intrare sunt corecte.") | |||
numar = int(numar) | |||
print(sum_div_prim(numar)) | |||
else: | |||
print("Datele de intrare sunt incorecte.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 13:10, 27 March 2023
Cerință
Să se scrie o funcție Python care să determine suma divizorilor primi ai unui număr natural transmis ca parametru. Funcția întoarce rezultatul prin intermediul unui parametru de ieşire.
Restricții de precizări
- numele funcției va fi sum_div_prim
- funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma divizorilor, respectiv valoarea calculată
- numărul pentru care se calculează suma divizorilor primi va fi mai mare decât 1 și mai mic decât 2.000.000.000
Date de intrare
Numărul n.
Date de ieșire
Dacă datele de intrare sunt corecte, apare mesajul Datele de intrare sunt corecte. și se returnează valoarea cerută, în caz contrar Datele de intrare sunt incorecte..
Exemplu
Exemplul 1
Date de intrare
1234
Date de ieșire
Datele de intrare sunt corecte. și valoarea returnată va fi 619.
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 sum_div_prim(numar, suma=0):
for i in range(2, numar + 1): if numar % i == 0: este_prim = True for j in range(2, int(i ** 0.5) + 1): if i % j == 0: este_prim = False break if este_prim: suma += i return suma
if __name__ == '__main__':
numar = input() if (numar.isdigit() and 1 <= int(numar) <= 2_000_000_000): print("Datele de intrare sunt corecte.") numar = int(numar) print(sum_div_prim(numar)) else: print("Datele de intrare sunt incorecte.")
</syntaxhighlight>