2312 - GuIT

From Bitnami MediaWiki
Revision as of 10:57, 11 April 2023 by Paul Matei (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Ghiţă s-a hotărât să plece de-acasă de Ignat, având nişte previziuni sumbre. Neavând bani, s-a gândit să-şi scoată un single de sezon, “guIT”. Din vânzarea lui a obţinut frumoasa sumă de n dolari.Pentru a câştiga un meniu vegetarian de Crăciun, trebuie să aflaţi suma numerelor prime din descompunerea lui n, ştiind că n este produs de trei numere prime distincte.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieşire

Programul va afișa pe ecran numărul S, reprezentând suma celor trei numere prime din descompunerea lui n.

Restricții și precizări

  • 1 ≤ n ≤ 10^12

Exemplu

Intrare
105
Ieșire
15

Explicație

105 = 3•5•7, deci suma este 3+5+7=15.

Rezolvare

<syntaxhighlight lang="python" line> import math

def validare_date_numar(n):

   if 1 <= int(n) <= 1000000:
       return True
   else:
       return False

def validare_date(k):

   if 1 <= int(k) <= 1000:
       return True
   else:
       return False

def print_num(n, k):

   s = 0
   d = 2
   while n > 1:
       p = 0
       while n % d == 0:
           n //= d
           p += 1
       if p > 0:
           s += d
       d += 1
       if d * d > n:
           d = n
   return s

if __name__ == '__main__':

   n = input()
   k = input()
   if validare_date_numar(n) and validare_date(k):
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
       numar = print_num(int(n), int(k))
       print(numar)
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>

Explicație rezolvare

Acesta este un cod Python care primește două numere, verifică dacă acestea sunt valide și apoi calculează suma factorilor primi ai primului număr care apar de cel puțin a doua valoare dată. Dacă numerele introduse sunt valide, codul va afișa suma factorilor primi, altfel va afișa un mesaj de eroare.