0020 - Suma divizorilor primi

From Bitnami MediaWiki
Revision as of 13:10, 27 March 2023 by Vardai Erwin (talk | contribs)

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>