3663 - PPDP: Diferență între versiuni
De la Universitas MediaWiki
Fără descriere a modificării |
|||
Linia 13: | Linia 13: | ||
: 12 | : 12 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 4 | : 4 | ||
== Explicație == | == Explicație == | ||
Linia 47: | Linia 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: |
Versiunea de la data 11 aprilie 2023 10:24
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
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.")