2324 - Prim 002
Cerinţa
Anul 2017 tocmai s-a încheiat, iar nostalgicii suferă în tăcere deoarece acesta era număr prim. Dorel, un personaj întreprinzător, s-a gândit să afle pentru un număr natural n dat, care este cel mai mare divizor prim al acestuia.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieşire
Programul va afișa pe ecran cel mai mare divizor prim al lui n.
Restricții și precizări
- 1 ≤ n ≤ 10^14
Exemplu
- Intrare
- 2018
- Ieșire
- 1009
Explicație
Divizorii lui 2018 sunt 1, 2, 1009, 2018, iar cel mai mare divizor prim este 1009.
Rezolvare
<syntaxhighlight lang="python" line> def validare_date(n):
"""Verifică dacă n se încadrează în intervalul [1, 10^14].""" return 1 <= n <= 10**14
def este_prim(n):
"""Verifică dacă n este un număr prim.""" if n < 2: return False for i in range(2, int(n**0.5)+1): if n % i == 0: return False return True
n = int(input("Introduceți numărul n: ")) while not validare_date(n):
print("Numărul introdus nu se încadrează în intervalul [1, 10^14].") n = int(input("Introduceți alt număr: "))
if este_prim(n):
print(n, "este un număr prim.")
else:
d = 2 while n > 1: if n % d == 0: n //= d if este_prim(d): max_div_prim = d else: d += 1 print("Cel mai mare divizor prim al lui", n, "este", max_div_prim)
</syntaxhighlight>