1960 - Perfecte
De la Universitas MediaWiki
Cerința
Un număr natural nenul se numește perfect dacă este egal cu suma divizorilor săi naturali strict mai mici decât el.
Exemplu: 28 este număr perfect pentru că 28 = 1 + 2 + 4 + 7 + 14. Se dă un șir de n numere naturale. Pentru fiecare element din șir se va afișa valoarea 1 dacă acesta este perfect sau 0 în caz contrar.
Date de intrare
Programul citește de la tastatură numărul n și apoi n numere naturale.
Date de ieșire
Programul va afișa pe ecran șirul de valori 1 și 0 separate prin câte un spațiu, conform cerinței.
Restricții și precizări
- 0 < n < 1000;
- numerele citite vor fi mai mici decât ;
Exemplul 1
- Intrare
- 5
- 28 7 8 9 6
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 1 0 0 0 1
Explicație
- 28 și 6 sunt numere perfecte.
Exemplul 2
- Intrare
- 0
- 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
#1960 - Perfecte
# definim funcția care primește ca argument un număr natural și verifică dacă acesta este perfect
def is_perfect(num):
divisors_sum = 0
for i in range(1, num):
if num % i == 0:
divisors_sum += i
return divisors_sum == num
if __name__ == "__main__":
# citim de la tastatură numărul de elemente și vectorul de numere
n = int(input("Introduceți numărul de elemente: "))
vector = list(map(int, input("Introduceți elementele vectorului: ").split()))
# verificarea restricțiilor
if 0 < n < 1000 and all(0 <= i < 10**19 for i in vector):
print("Datele de intrare corespund restricțiilor impuse.")
# pentru fiecare număr din vector, verificăm dacă este perfect și afișăm rezultatul
for num in vector:
if is_perfect(num):
print("1", end=" ")
else:
print("0", end=" ")
print()
else:
print("Datele de intrare nu corespund restricțiilor impuse.")