0405 - Suma Cifre Nr Prime
Cerinţa
Se dă un șir cu n numere naturale. Determinați suma tuturor cifrelor numerelor prime din șir.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale.
Date de ieşire
Programul afișează pe ecran numărul S, reprezentând suma tuturor cifrelor numerelor prime din șir.
Restricții și precizări
- 1 ≤ n ≤ 1000
- cele n numere citite vor fi mai mici decât 1.000.000.000.
Exemplu
- Intrare
- 6
83 36 53 401 90 7
- Ieșire
- 31
Explicație
Dintre cele 6 numere citite sunt prime : 83 53 401 7. Suma cifrelor acestor numere este 31.
Rezolvare
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.")
Explicație rezolvare
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.