0435 - Factori Primi: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
(One intermediate revision by the same user not shown)
Line 37: Line 37:


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


</syntaxhighlight>
</syntaxhighlight>
==Explicație rezolvare==
==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.
În această problemă se verifică dacă două numere naturale au aceeaș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ă aceeaș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 aceeași factori primi. La sfârșit, codul afișează dacă cele două numere au aceeași factori primi sau nu.

Latest revision as of 15:10, 8 May 2023

Cerinţa[edit | edit source]

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[edit | edit source]

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

Date de ieşire[edit | edit source]

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[edit | edit source]

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

Exemplu[edit | edit source]

Intrare
72 48
Ieșire
DA

Explicație[edit | edit source]

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

Exemplu 2[edit | edit source]

Intrare
72 30
Ieșire
NU

Explicație[edit | edit source]

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

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> 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):
       aceeasi_factori = True
       d = 2
       while n > 1:
           if n % d == 0:
               if m % d != 0:
                   aceeasi_factori = False
               while n % d == 0:
                   n /= d
               while m % d == 0:
                   m /= d
           d += 1
           if d * d > n:
               d = n
       if aceeasi_factori and m == 1:
           print("DA")
       else:
           print("NU")


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

În această problemă se verifică dacă două numere naturale au aceeaș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ă aceeaș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 aceeași factori primi. La sfârșit, codul afișează dacă cele două numere au aceeași factori primi sau nu.