0405 - Suma Cifre Nr Prime
Cerinţa[edit | edit source]
Se dă un șir cu n numere naturale. Determinați suma tuturor cifrelor numerelor prime din șir.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale.
Date de ieşire[edit | edit source]
Programul afișează pe ecran numărul S, reprezentând suma tuturor cifrelor numerelor prime din șir.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 1000
- cele n numere citite vor fi mai mici decât 1.000.000.000.
Exemplu[edit | edit source]
- Intrare
- 6
83 36 53 401 90 7
- Ieșire
- 31
Explicație[edit | edit source]
Dintre cele 6 numere citite sunt prime : 83 53 401 7. Suma cifrelor acestor numere este 31.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def validare_date(n: int, a: list) -> bool:
if not 1 <= n <= 1000: return False for x in a: if not 1 <= x <= 10**6: return False return True
def prim(n: int) -> int:
cnt = 0 for i in range(1, int(n**0.5)+1): if n % i == 0: cnt += 2 if i*i == n: cnt -= 1 if cnt == 2: return 1 else: return 0
def sum(n: int) -> int:
s = 0 while n > 0: s += n % 10 n //= 10 return s
if __name__ == '__main__':
n = int(input()) a = list(map(int, input().split())) if validare_date(n, a): s = 0 for x in a: if prim(x): s += sum(x) print(s) else: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Acest cod conține trei funcții și un bloc de cod principal care folosește aceste funcții pentru a efectua o sarcină specifică:
1.Funcția validare_date primește un număr întreg n și o listă de numere întregi a și returnează True dacă valorile sunt conforme cu anumite restricții și False în caz contrar. În acest caz, valorile valide pentru n sunt între 1 și 1000, iar valorile valide pentru fiecare element din lista a sunt între 1 și 10^6.
2.Funcția prim primește un număr întreg n și returnează 1 dacă numărul este prim și 0 în caz contrar. În această funcție, se folosește o metodă de determinare a numărului de divizori ai lui n, și anume, se numără câți divizori există în intervalul [1, sqrt(n)]. Dacă numărul total de divizori este 2, atunci numărul este prim.
3.Funcția sum primește un număr întreg n și returnează suma cifrelor acestuia. Această funcție extrage cifrele din numărul dat prin împărțirea repetată la 10 și adună cifra obținută la suma totală.
4.Blocul de cod principal solicită introducerea numărului n și a listei a, validează datele introduse utilizând funcția validare_date, calculează suma cifrelor tuturor numerelor prime din lista a și o afișează. În cazul în care datele introduse nu sunt valide, se afișează un mesaj de eroare.