3663 - PPDP
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 introduse 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>