0062 - Factorizare: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se citeşte un număr natural '''n'''. Să se afişeze descompunerea în factori primi a lui '''n'''. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieşire == Programul afișează pe ecran perechile '''b p''', reprezentând factorii primi şi puterile corespunzătoare. Perechile se afişează câte una pe o linie a ecranului, în ordinea crescătoare a bazelor. Cele două valori din pereche sunt separate printr-un spaţi...
 
Line 13: Line 13:
; Ieșire
; Ieșire
: 3 3
: 3 3
5 1
: 5 1
 
== Explicație ==  
== Explicație ==  
*'''135 = 33 * 51'''.
*'''135 = 33 * 51'''.

Revision as of 19:47, 31 March 2023

Cerinţa

Se citeşte un număr natural n. Să se afişeze descompunerea în factori primi a lui n.

Date de intrare

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

Date de ieşire

Programul afișează pe ecran perechile b p, reprezentând factorii primi şi puterile corespunzătoare. Perechile se afişează câte una pe o linie a ecranului, în ordinea crescătoare a bazelor. Cele două valori din pereche sunt separate printr-un spaţiu.

Restricții și precizări

  • 1 < n < 2.100.000.000

Exemplu

Intrare
135
Ieșire
3 3
5 1

Explicație

  • 135 = 33 * 51.

Rezolvare

<syntaxhighlight lang="python" line> import math


def validare_natural(n):

   try:
       n = int(n)
       if n > 1 and n < 2100000000:
           return n
       else:
           print("Numarul trebuie sa fie un numar natural mai mare decat 1 si mai mic decat 2100000000.")
           return None
   except ValueError:
       print("Nu ati introdus un numar natural valid.")
       return None


n = input("Introduceti numarul n: ") n = validare_natural(n)


if n:

   i = 2
   while i <= n:
       p = 0
       while n % i == 0:
           p += 1
           n //= i
       if p > 0:
           print(i, p)
       i += 1


</syntaxhighlight>