1319 - Descompunere factori

De la Universitas MediaWiki
Versiunea din 26 martie 2023 09:50, autor: Paul Matei (discuție | contribuții) (Pagină nouă: == Cerinţa == Se citeşte un număr natural '''n'''. Să se determine descompunerea în factori primi a lui '''n'''. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieşire == Programul va afișa pe ecran factorii primi ai lui '''n''' în ordine crescătoare, separați prin câte un spațiu. == Restricții și precizări == *'''2 ≤ n ≤ 2.000.000.000''' == Exemplu == ; Intrare : 1100 ; Ieșire : 2 2 5 5 11 == Explicație == Numărul...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerinţa

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

Date de intrare

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

Date de ieşire

Programul va afișa pe ecran factorii primi ai lui n în ordine crescătoare, separați prin câte un spațiu.

Restricții și precizări

  • 2 ≤ n ≤ 2.000.000.000

Exemplu

Intrare
1100
Ieșire
2 2 5 5 11

Explicație

Numărul n=1100=2*2*5*5*11.

Rezolvare

import math

def validate_date(date):
    try:
        n = int(date)
        if n >= 2 and n <= 2000000000:
            return n
        else:
            print("Numarul introdus trebuie sa fie un numar natural intre 2 si 2.000.000.000")
            return None
    except ValueError:
        print("Nu ati introdus un numar natural valid")
        return None

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

if n:
    i = 2
    while i <= math.sqrt(n):
        if n % i == 0:
            print(i, end=' ')
            n //= i
        else:
            i += 1

    if n > 1:
        print(n, end=' ')