1574 - Prietene: Difference between revisions
Robert Manc (talk | contribs) Pagină nouă: == Cerinţa == Se dau două numere naturale. Să se afle dacă aceste numere sunt prietene. Numerele prietene sunt perechile de numere în care fiecare număr în parte este suma tuturor divizorilor celuilalt număr, mai puțin acesta. == Date de intrare == Programul citește de la tastatură două numere '''numar1''' și '''numar2'''. == Date de ieşire == Programul va afișa pe ecran mesajul '''PRIETENE''' dacă cele două numere sunt prietene, respectiv '''NU SUNT PRIETENE... |
Robert Manc (talk | contribs) No edit summary |
||
Line 19: | Line 19: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def validare_date( | def validare_date(numar1, numar2): | ||
flag = False | flag = False | ||
if | if numar1.isdigit() and numar2.isdigit(): | ||
if 0 <= int( | if 0 <= int(numar1) <= 100_000 and 0 <= int(numar2) <= 100_000: | ||
flag = True | flag = True | ||
return flag | return flag | ||
def | def prietene(numar1, numar2): | ||
suma_div_num1 = sum(i for i in range(1, numar1) if numar1 % i == 0) | |||
for i in range(1, | suma_div_num2 = sum(i for i in range(1, numar2) if numar2 % i == 0) | ||
if suma_div_num1 == numar2 and suma_div_num2 == numar1: | |||
print("PRIETENE") | |||
if | |||
print(" | |||
else: | else: | ||
print("NU") | print("NU SUNT PRIETENE") | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
numar1, numar2 = input().split() | |||
if validare_date( | if validare_date(numar1, numar2): | ||
print("\nDatele de intrare corespund restricțiilor impuse.\n") | print("\nDatele de intrare corespund restricțiilor impuse.\n") | ||
prietene(int(numar1), int(numar2)) | |||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 17:32, 16 March 2023
Cerinţa
Se dau două numere naturale. Să se afle dacă aceste numere sunt prietene. Numerele prietene sunt perechile de numere în care fiecare număr în parte este suma tuturor divizorilor celuilalt număr, mai puțin acesta.
Date de intrare
Programul citește de la tastatură două numere numar1 și numar2.
Date de ieşire
Programul va afișa pe ecran mesajul PRIETENE dacă cele două numere sunt prietene, respectiv NU SUNT PRIETENE dacă aceste numere nu sunt prietene.
Restricții și precizări
- numar ∈ Ν
- 0 ⩽ numar1 ⩽ 100.000
- 0 ⩽ numar2 ⩽ 100.000
Exemplu
- Intrare
- 220 284
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- PRIETENE
Explicație
Divizorii lui 220 sunt 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 și 110, iar suma acestora este 284. Divizorii lui 284 sunt 1, 2, 4, 71 și 142, iar suma acestora este 220.
Rezolvare
<syntaxhighlight lang="python" line> def validare_date(numar1, numar2):
flag = False if numar1.isdigit() and numar2.isdigit(): if 0 <= int(numar1) <= 100_000 and 0 <= int(numar2) <= 100_000: flag = True return flag
def prietene(numar1, numar2):
suma_div_num1 = sum(i for i in range(1, numar1) if numar1 % i == 0) suma_div_num2 = sum(i for i in range(1, numar2) if numar2 % i == 0) if suma_div_num1 == numar2 and suma_div_num2 == numar1: print("PRIETENE") else: print("NU SUNT PRIETENE")
if __name__ == '__main__':
numar1, numar2 = input().split() if validare_date(numar1, numar2): print("\nDatele de intrare corespund restricțiilor impuse.\n") prietene(int(numar1), int(numar2)) else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>