2769 - Trei Prime
Cerinţa[edit | edit source]
Se dă un număr natural n care este produs de trei numere prime distincte. Ştiind că există m numere naturale prime cu n şi mai mici decât acesta, să se afişeze în ordine crescătoare cele trei numere prime din descompunerea lui n.
Date de intrare[edit | edit source]
Programul citește de la tastatură numerele n şi m.
Date de ieşire[edit | edit source]
Programul va afișa pe ecran numerele prime din descompunerea lui n.
Restricții și precizări[edit | edit source]
- 1 ≤ m ≤ n ≤ 10*18
Exemplu[edit | edit source]
- Intrare
- 66 20
- Ieșire
- 2 3 11
Explicație[edit | edit source]
Avem 66=2•3•11 şi există 20 de numere prime cu 66, mai mici decât acesta.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> import math
def validare_date(n, m):
if not (1 <= m <= n <= 10**18): return False return True
if __name__ == '__main__':
# Citim valorile de la tastatură n = int(input("Introduceti numarul n: ")) m = int(input("Introduceti numarul m: "))
# Validăm datele de intrare if not validare_date(n, m): print("Datele de intrare nu corespund restricțiilor impuse.") else: # Initializam variabilele factori = [] numar_prim = 0
# Factorizam numarul n while n > 1: for i in range(2, int(math.sqrt(n))+1): if n % i == 0: factori.append(i) n //= i break else: factori.append(n) n //= n
# Numaram factorii primi care sunt mai mici decat n si sunt, de asemenea, primi for factor in factori: if factor < n and all(factor % i != 0 for i in range(2, int(math.sqrt(factor))+1)): numar_prim += 1
# Afisam cei trei factori primi distincti ai lui n in ordine crescatoare print(sorted(set(factori))[:3]) print("\nDatele de intrare corespund restricțiilor impuse.\n")
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Acest program calculează factorii primi ai unui număr natural dat și afișează cele trei numere prime distincte care alcătuiesc acel număr, precum și numărul de numere prime mai mici decât numărul dat și le afișează pe ecran. Programul verifică mai întâi dacă datele de intrare sunt valide și apoi factorizează numărul dat pentru a găsi factorii primi. În cele din urmă, programul afișează cele trei numere prime distincte din lista factorilor primi și confirmă că datele de intrare sunt valide.