0435 - Factori Primi: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: == Cerinţa == Se dau două numere naturale nenule. Să se verifice dacă cele două numere au exact aceiași factor primi, indiferent de puterea acestora. == Date de intrare == Programul citește de la tastatură numerele '''n''' și '''m'''. == Date de ieşire == Programul afișează pe ecran mesajul '''DA''', dacă cele două numere au exact aceiași factori primi, respectiv '''NU''' în caz contrar. == Restricții și precizări == *cele două numere citite vor fi mai mic...)
 
Fără descriere a modificării
Linia 25: Linia 25:
def validare_date(n, m):
def validare_date(n, m):
     if n <= 0 or m <= 0:
     if n <= 0 or m <= 0:
        print("Datele de intrare nu corespund restricțiilor impuse.")
         return False
         return False
     return True
     else:
        print("Datele de intrare corespund restricțiilor impuse.")
        return True
 


if __name__ == '__main__':
if __name__ == '__main__':
     n, m = map(int, input().split())
     n = int(input("Introduceți primul număr: "))
    m = int(input("Introduceți al doilea număr: "))
 
     if validare_date(n, m):
     if validare_date(n, m):
         aceiasi_factori = True
         aceiasi_factori = True
         d = 2
         d = 2
         while n > 1:
         while n > 1:
            p = 0
             if n % d == 0:
             if n % d == 0:
                 if m % d != 0:
                 if m % d != 0:
                     aceiasi_factori = False
                     aceiasi_factori = False
                 while n % d == 0:
                 while n % d == 0:
                     n //= d
                     n /= d
                 while m % d == 0:
                 while m % d == 0:
                     m //= d
                     m /= d
             d += 1
             d += 1
             if d * d > n:
             if d * d > n:
Linia 49: Linia 54:
         else:
         else:
             print("NU")
             print("NU")
        print("\nDatele de intrare corespund restricțiilor impuse.\n")
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")





Versiunea de la data 25 aprilie 2023 10:11

Cerinţa

Se dau două numere naturale nenule. Să se verifice dacă cele două numere au exact aceiași factor primi, indiferent de puterea acestora.

Date de intrare

Programul citește de la tastatură numerele n și m.

Date de ieşire

Programul afișează pe ecran mesajul DA, dacă cele două numere au exact aceiași factori primi, respectiv NU în caz contrar.

Restricții și precizări

  • cele două numere citite vor fi mai mici decât 2*30

Exemplu

Intrare
72 48
Ieșire
DA

Explicație

72 și 48 au exact aceiași factori primi: 2 3.

Exemplu 2

Intrare
72 30
Ieșire
NU

Explicație

Factorii primi ai lui 72 sunt 2 3, iar factorii primi ai lui 30 sunt 2 3 5.

Rezolvare

def validare_date(n, m):
    if n <= 0 or m <= 0:
        print("Datele de intrare nu corespund restricțiilor impuse.")
        return False
    else:
        print("Datele de intrare corespund restricțiilor impuse.")
        return True


if __name__ == '__main__':
    n = int(input("Introduceți primul număr: "))
    m = int(input("Introduceți al doilea număr: "))

    if validare_date(n, m):
        aceiasi_factori = True
        d = 2
        while n > 1:
            if n % d == 0:
                if m % d != 0:
                    aceiasi_factori = False
                while n % d == 0:
                    n /= d
                while m % d == 0:
                    m /= d
            d += 1
            if d * d > n:
                d = n
        if aceiasi_factori and m == 1:
            print("DA")
        else:
            print("NU")

Explicație rezolvare

În această problemă se cere verificarea dacă două numere naturale au aceiași factori primi. Codul primește cele două numere de la tastatură, apoi verifică dacă datele de intrare sunt valide (ambele numere trebuie să fie pozitive). Dacă datele sunt valide, codul caută factorii primi ai primului număr și verifică dacă aceiași factori apar și în al doilea număr. Dacă toți factorii primi ai primului număr apar și în al doilea număr, iar al doilea număr nu are alți factori primi, atunci cele două numere au aceiași factori primi. La sfârșit, codul afișează dacă cele două numere au aceiași factori primi sau nu.