0048 - Sumă Pătrate1: Difference between revisions
Nagy Lenard (talk | contribs) No edit summary |
Nagy Lenard (talk | contribs) No edit summary |
||
Line 33: | Line 33: | ||
def este_patrat_perfect(numar): | def este_patrat_perfect(numar): | ||
radadica = int(math.sqrt(numar)) | |||
return | return radadica * radadica == numar | ||
Revision as of 13:26, 26 March 2023
Sursa: [1]
Cerinţa
Să se scrie un program care citește numărul natural n și determină suma pătratelor perfecte mai mici sau egale cu n.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Acest program calculează suma pătratelor perfecte până la un număr dat de utilizator și afișează rezultatul. Datele de ieșire ale programului constau într-un singur număr, reprezentând suma pătratelor perfecte până la numărul introdus de utilizator. Dacă utilizatorul introduce un număr invalid (mai mic sau egal cu 0 sau mai mare sau egal cu 1000), programul va afișa un mesaj corespunzător și se va opri.
Restricţii şi precizări
- 0 < n < 1000
Exemplul 1
- Intrare
- Introduceti numarul n: 20
- Ieșire
- Rezultatul este 30
Exemplul 2
- Intrare
- Introduceti numarul n: 1001
- Ieșire
- Numarul trebuie sa fie mai mic decat 1000
Rezolvare
<syntaxhighlight lang="python" line>
- 0048
import math
def este_patrat_perfect(numar):
radadica = int(math.sqrt(numar)) return radadica * radadica == numar
def suma_patrate_perfecte_pana_la(n):
suma = 0 for i in range(1, n+1): if este_patrat_perfect(i): suma += i return suma
def valideaza_numar(n):
if n <= 0: print("Numarul trebuie sa fie mai mare decat 0") exit() if n >= 1000: print("Numarul trebuie sa fie mai mic decat 1000") exit()
if __name__ == '__main__':
n = int(input("Introduceti numarul n: ")) valideaza_numar(n) rezultat = suma_patrate_perfecte_pana_la(n) print("Rezultatul este", rezultat)
</syntaxhighlight>