0435 - Factori Primi: Difference between revisions
Paul Matei (talk | contribs) No edit summary |
Diana Butuza (talk | contribs) |
||
Line 58: | Line 58: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicație rezolvare== | ==Explicație rezolvare== | ||
În această problemă se | Î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. |
Revision as of 15:09, 8 May 2023
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
<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): 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")
</syntaxhighlight>
Explicație rezolvare
Î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.