0062 - Factorizare

De la Universitas MediaWiki

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

def validare_date(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


if __name__ == '__main__':
    n = input("Introduceti numarul n: ")
    n = validare_date(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
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")

Explicație rezolvare

Acest cod primește un număr întreg pozitiv n de la utilizator și verifică dacă este un număr natural valid (adică un număr întreg pozitiv mai mare decât 1 și mai mic decât 2.100.000.000).

Dacă numărul este valid, programul afișează factorii primi ai numărului. Factorii primi sunt numerele prime care pot fi înmulțite pentru a obține numărul inițial. De exemplu, factorii primi ai numărului 12 sunt 2 și 3, deoarece 12 = 2 * 2 * 3.

Pentru a afla factorii primi ai numărului, programul împarte succesiv numărul la numerele prime începând cu 2, până când rămâne doar 1. Dacă numărul este divizibil cu un anumit număr prim, programul afișează numărul prim și de câte ori apare acesta în descompunerea factorială a numărului.

Dacă numărul nu este valid, programul afișează un mesaj corespunzător.