3663 - PPDP: Difference between revisions
Diana Butuza (talk | contribs) |
Robert Manc (talk | contribs) No edit summary |
||
Line 13: | Line 13: | ||
: 12 | : 12 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 4 | : 4 | ||
== Explicație == | == Explicație == | ||
Line 47: | Line 47: | ||
numar = input() | numar = input() | ||
if validare_date(numar): | if validare_date(numar): | ||
print("\nDatele | print("\nDatele de intrare corespund restricțiilor impuse.\n") | ||
print(patrat_cel_mai_mic_divizor(int(numar))) | print(patrat_cel_mai_mic_divizor(int(numar))) | ||
else: | else: |
Revision as of 10:24, 11 April 2023
Cerinţa
Se dă un număr natural numit ”numar”. Calculați pătratul celui mai mic divizor propriu al său.
Date de intrare
Programul citește de la tastatură un număr natural numit ”numar”.
Date de ieşire
Programul va afișa pe ecran numărul calculat.
Restricții și precizări
- numar ∈ Ν
- 4 ⩽ numar ⩽ 1.000.000.000
- se garantează că ”numar” nu este prim
Exemplu
- Intrare
- 12
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 4
Explicație
Cel mai mic divizor al lui 12 este 2 iar pătratul acestei valori este 4.
Rezolvare
<syntaxhighlight lang="python" line> def validare_date(numar):
flag = False if numar.isdigit() and 4 <= int(numar) <= 1_000_000_000: flag = True if prim(int(numar)): flag = False return flag
def prim(numar):
if numar <= 1: return False for i in range(2, numar // 2 + 1): if numar % i == 0: return False return True
def patrat_cel_mai_mic_divizor(numar):
divizor = 2 while numar % divizor != 0: divizor += 1 return divizor**2
if __name__ == '__main__':
numar = input() if validare_date(numar): print("\nDatele de intrare corespund restricțiilor impuse.\n") print(patrat_cel_mai_mic_divizor(int(numar))) else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>