0017 - Suma divizorilor 2: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerință== Să se scrie o funcție Python care să determine suma divizorilor 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''' :Funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma :divizorilor,respectiv valoarea calculată :Valorile celor doi parametri vor fi numere naturale nenule mai mici decât '''...
 
No edit summary
Line 1: Line 1:
==Cerință==
==Cerință==
Să se scrie o funcție Python care să determine suma divizorilor 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 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==
:Numele funcției va fi '''sum_div'''
*Numele funcției va fi '''sum_div'''
:Funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma  
*Funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma  
:divizorilor,respectiv valoarea calculată
*divizorilor,respectiv valoarea calculată
:Valorile celor doi parametri vor fi numere naturale nenule mai mici decât '''2000000000'''
*Valorile celor doi parametri vor fi numere naturale nenule mai mici decât '''2000000000'''
 


==Important==
==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.
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==
===Rezolvare ver. 1===
===Rezolvare ver. 1===
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
def validare(n, result):
    return 0 < int(n), int(result) < 2000000000


def sum_div(n, result):
def sum_div(n, result):
    """Calculează suma divizorilor unui număr natural."""
    if not isinstance(n, int) or not isinstance(result, int):
        raise TypeError("Ambele parametri trebuie să fie numere întregi.")
    if n <= 0:
        raise ValueError("Numărul trebuie să fie pozitiv.")
     result = 0
     result = 0
     for i in range(1, n+1):
     for i in range(1, n + 1):
         if n % i == 0:
         if n % i == 0:
             result += i
             result += i
     return result
     return result


if __name__ == "__main__":
if __name__ == "__main__":
     n = int(input("Introduceți un număr: "))
     n = input("Introduceți un număr: ")
     result = 0
     result = 0
     print(f"Suma divizorilor lui {n} este: {sum_div(n, result)}")
     if validare(n, result):
 
        n = int(n)
 
        print("Datele introduse corespund restricțiilor impuse")
 
        print(f"Suma divizorilor lui {n} este: {sum_div(n, result)}")
    else:
        print("Datele introduse nu corespund restricțiilor impuse")
</syntaxhighlight>
</syntaxhighlight>

Revision as of 20:40, 19 March 2023

Cerință

Să se scrie o funcție Python care să determine suma divizorilor 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
  • Funcția va avea doi parametri, reprezentând numărul pentru care se calculează suma
  • divizorilor,respectiv valoarea calculată
  • Valorile celor doi parametri vor fi numere naturale nenule mai mici decât 2000000000

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, result):

   return 0 < int(n), int(result) < 2000000000


def sum_div(n, result):

   result = 0
   for i in range(1, n + 1):
       if n % i == 0:
           result += i
   return result


if __name__ == "__main__":

   n = input("Introduceți un număr: ")
   result = 0
   if validare(n, result):
       n = int(n)
       print("Datele introduse corespund restricțiilor impuse")
       print(f"Suma divizorilor lui {n} este: {sum_div(n, result)}")
   else:
       print("Datele introduse nu corespund restricțiilor impuse")

</syntaxhighlight>