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 '''...
 
 
(4 intermediate revisions by 2 users not shown)
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.
   
 
==Date de intrare==  
Se citește de la tastatură:
*'''number''' - un număr natural nenul mai mic decât '''2000000000''' pentru care se calculează suma divizorilor
*'''div_sum''' - valoarea calculată a sumei divizorilor, inițial setată la '''0'''
 
==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 '''div_sum''' - suma divizorilor numărului dat ca intrare, calculată de funcția sum_div. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."


==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'''
 
==Exemplu==


;Intrare
:12
;Ieșire
:Datele de intrare corespund restrictiilor impuse.
:28


==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>
 
 
==Explicatii==


Acest cod reprezintă o implementare a funcției sum_div descrisă anterior și include și o funcție validare pentru a verifica dacă datele de intrare respectă restricțiile impuse în enunț.


Funcția sum_div primește două parametri: n reprezentând numărul pentru care trebuie să calculeze suma divizorilor și result reprezentând valoarea calculată a sumei divizorilor, inițial setată la 0. În interiorul acestei funcții, se calculează suma divizorilor lui n prin iterarea prin numerele de la 1 la n și adunarea tuturor divizorilor lui n.


</syntaxhighlight>
Funcția validare primește doi parametri: n și result. În această funcție, se verifică dacă n este un număr natural nenul mai mic decât 2000000000 și dacă result este mai mic decât 2000000000.
 
În cadrul programului principal, utilizatorul este întâi întrebat să introducă un număr. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare. Dacă datele sunt valide, programul afișează suma divizorilor numărului introdus de utilizator, calculată utilizând funcția sum_div. În caz contrar, programul afișează un mesaj de eroare.

Latest revision as of 15:33, 6 May 2023

Cerință[edit | edit source]

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.

Date de intrare[edit | edit source]

Se citește de la tastatură:

  • number - un număr natural nenul mai mic decât 2000000000 pentru care se calculează suma divizorilor
  • div_sum - valoarea calculată a sumei divizorilor, inițial setată la 0

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa div_sum - suma divizorilor numărului dat ca intrare, calculată de funcția sum_div. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări[edit | edit source]

  • 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

Exemplu[edit | edit source]

Intrare
12
Ieșire
Datele de intrare corespund restrictiilor impuse.
28

Important[edit | edit source]

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[edit | edit source]

Rezolvare ver. 1[edit | edit source]

<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>


Explicatii[edit | edit source]

Acest cod reprezintă o implementare a funcției sum_div descrisă anterior și include și o funcție validare pentru a verifica dacă datele de intrare respectă restricțiile impuse în enunț.

Funcția sum_div primește două parametri: n reprezentând numărul pentru care trebuie să calculeze suma divizorilor și result reprezentând valoarea calculată a sumei divizorilor, inițial setată la 0. În interiorul acestei funcții, se calculează suma divizorilor lui n prin iterarea prin numerele de la 1 la n și adunarea tuturor divizorilor lui n.

Funcția validare primește doi parametri: n și result. În această funcție, se verifică dacă n este un număr natural nenul mai mic decât 2000000000 și dacă result este mai mic decât 2000000000.

În cadrul programului principal, utilizatorul este întâi întrebat să introducă un număr. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare. Dacă datele sunt valide, programul afișează suma divizorilor numărului introdus de utilizator, calculată utilizând funcția sum_div. În caz contrar, programul afișează un mesaj de eroare.