2324 - Prim 002

From Bitnami MediaWiki
Revision as of 10:26, 26 March 2023 by Paul Matei (talk | contribs) (Pagină nouă: == 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 ≤ 1...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>